Oracle
 sql >> база данни >  >> RDS >> Oracle

Изявление за избор на заявка на PHP Oracle вътре в цикъл бавно

Ако прочетох кода ви правилно, това, което търсите, е единичен оператор MERGE, който можете да изпълните в базата данни. Не знам PHP, така че не мога да ви дам как трябва да се нарича, но мога да ви дам SQL израза, който да изпълните:

MERGE INTO mep_tbl_output_details tgt
  USING (SELECT mtm.modelid,
                mtm.model_name,
                mtmc.configurationid,
                mtmc.date_code,
                mtmc.read_row_after,
                mtmc.create_from_format,
                mtmc.ip_address,
                mtmc.status,
                mtmc.ts_code
         FROM   mep_tbl_model mtm
                INNER JOIN mep_tbl_model_configuration mtmc ON mtm.modelid = mtmc.modelid_fk
         WHERE  mtm.active = 'Y'
         AND    mtm.location = 'PCBA') src
    ON (tgt.modelid_fk = src.modelid
        AND tgt.ts_code = src.ts_code
        AND tgt.configurationid_fk = src.configurationid
        AND tgt.runningdate = :log_date
        AND tgt.shift = 'Morning'
        AND tgt.quantity_status = 'OK')
WHEN NOT MATCHED THEN
  INSERT (tgt.modelid_fk, tgt.running_date, tgt.quantity_status, tgt.ts_code, tgt.shift, tgt.configuration_fk)
  VALUES (src.modelid, :log_date, 'OK', src.ts_code, 'Morning', src.configurationid);

Това прави съединението, което преоткривате с вашите цикли, свързва го обратно с таблицата, в която се опитвате да вмъкнете, и вмъква ред само ако той вече не съществува в таблицата.

Ще трябва да напишете PHP кода, за да изпълните това, като сте предали log_date като свързваща променлива.

Чрез обвързването на променливата вие позволявате на базата данни да пропусне твърдия анализ (т.е. намиране на най-добрия начин за изпълнение на заявката), което спестява време.

Като не извличате данни и ръчно зацикляте, преди да изберете повече данни и да разберете дали трябва да направите вмъкване, вие пропускате много контекстно превключване и изтегляне/бутане на данни в мрежата. Оставете базата данни да свърши тежката работа; това е, за което е проектиран!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да напиша/актуализирам Oracle blob по надежден начин?

  2. Списък на таблица и колони в едно изявление

  3. Генериране на SQL схема от XML

  4. Oracle SQL:SQL заявка, произвеждаща 4 пъти повече резултати и данните няма да бъдат подредени правилно

  5. Разделете низ с нов ред и добавете в масив в PL sql Oracle