Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Pernyataan pemilihan kueri PHP Oracle di dalam loop lambat

Jika saya telah membaca kode Anda dengan benar, yang Anda cari adalah satu pernyataan MERGE yang dapat Anda jalankan di database. Saya tidak tahu PHP, jadi saya tidak bisa memberi Anda bagaimana seharusnya dipanggil, tapi saya bisa memberi Anda pernyataan SQL untuk dijalankan:

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

Ini melakukan gabungan yang Anda ciptakan kembali dengan loop Anda, menautkannya kembali ke tabel yang Anda coba masukkan, dan hanya menyisipkan baris jika belum ada di tabel.

Anda perlu menulis kode PHP untuk mengeksekusi ini, setelah memasukkan log_date sebagai variabel bind.

Dengan mengikat variabel, Anda mengizinkan database untuk melewatkan hard parse (yaitu menemukan cara terbaik untuk mengeksekusi kueri), yang menghemat waktu.

Dengan tidak mengambil data dan mengulang putaran secara manual sebelum memilih lebih banyak data dan bekerja jika Anda perlu melakukan penyisipan, Anda melewatkan banyak pengalihan konteks dan menarik/mendorong data di seluruh jaringan. Biarkan database melakukan pekerjaan berat; itulah yang dirancang untuk dilakukan!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-00060:kebuntuan terdeteksi saat menunggu sumber daya

  2. Pilih nilai elemen xml di Oracle

  3. Daftar tabel dan kolom dalam satu pernyataan

  4. permintaan oracle untuk menemukan hak istimewa pada prosedur tersimpan

  5. -bash:imp:perintah tidak ditemukan oracle