Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Zapytanie w PHP Oracle zapytanie select wewnątrz pętli powolne

Jeśli poprawnie przeczytałem twój kod, to czego szukasz to pojedyncza instrukcja MERGE, którą możesz uruchomić w bazie danych. Nie znam PHP, więc nie mogę podać, jak powinno się go wywoływać, ale mogę podać instrukcję SQL do uruchomienia:

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);

Powoduje to połączenie, które wymyśliłeś na nowo z pętlami, łączy je z tabelą, do której próbujesz wstawić, i wstawia tylko wiersz, jeśli jeszcze nie istnieje w tabeli.

Aby to wykonać, musiałbyś napisać kod PHP, przekazując log_date jako zmienną wiązania.

Wiążąc zmienną, pozwalasz bazie danych pominąć twardą analizę (tj. znalezienie najlepszego sposobu wykonania zapytania), co oszczędza czas.

Nie pobierając danych i ręcznie zapętlając się przed wybraniem większej ilości danych i ustaleniem, czy musisz wykonać wstawianie, pomijasz wiele przełączania kontekstu i ściągania/przesyłania danych przez sieć. Niech baza danych zajmie się ciężkimi zadaniami; do tego został zaprojektowany!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyzwalaj alternatywy dla dwóch tabel, które muszą się wzajemnie aktualizować

  2. Oracle Entity Framework — generowanie encji z tabel w innym schemacie

  3. Długość przechowywania BLOB w Oracle

  4. Jak utworzyć obiekt oracle.sql.ARRAY?

  5. Grupuj według identyfikatora z wyjątkiem rekordów NULL