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

JPA dan 1000 ID digunakan di Oracle IN Operator

Mengatasi IN batas tidak efisien dan JPA tidak selalu merupakan alat yang tepat untuk pekerjaan itu. Pertimbangkan hal berikut:

  1. Ribuan nilai terikat akan menghasilkan SQL yang berpotensi megabyte. Ini akan memakan waktu lama untuk mengirim SQL ini ke database. Basis data mungkin membutuhkan waktu lebih lama untuk membaca teks SQL daripada menjalankannya sesuai Jawaban Tom untuk pertanyaan "Batas dan konversi sangat panjang IN:WHERE x IN ( ,,, ...)" pertanyaan .

  2. Ini akan menjadi tidak efisien karena penguraian SQL. Tidak hanya membutuhkan waktu lama untuk menguraikan SQL yang panjang ini, tetapi setiap permintaan memiliki jumlah parameter terikat yang berbeda yang akan diuraikan dan direncanakan secara terpisah (lihat artikel ini menjelaskannya ).

  3. Ada batasan keras dari parameter terikat dalam pernyataan SQL. Anda dapat mengulangi OR beberapa kali untuk mengatasi IN batas tetapi Anda akan mencapai batas pernyataan SQL di beberapa titik.

Untuk jenis kueri tersebut, biasanya lebih baik membuat sementara tabel . Buat satu sebelum kueri Anda, masukkan semua pengenal ke dalamnya dan gabungkan dengan tabel entitas dalam kueri Anda untuk mensimulasikan IN kondisi.

Idealnya, Anda dapat mengganti JPA dengan prosedur tersimpan, terutama jika Anda menarik puluhan ribu pengenal dari database hanya untuk meneruskannya kembali ke database di kueri berikutnya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. di mana permintaan rownum=1 membutuhkan waktu di Oracle

  2. Butuh bantuan untuk menautkan tabel oracle di MS Access

  3. Oracle:Perbedaan antara koneksi non-pooled dan DRCP

  4. cara membuat rencana penjelasan untuk seluruh prosedur tersimpan

  5. menampilkan hasil secara vertikal di oracle