Melanggar had 1000 klausa Oracle SQL IN
Soalan: Adakah klausa SQL IN dalam pangkalan data Oracle menyokong lebih daripada 1000 item? Bagaimanakah ini dicapai atau apakah alternatifnya?
Jawapan:
Walaupun klausa SQL IN itu sendiri menyokong maksimum 1000 item, kaedah alternatif wujud dalam Pangkalan Data Oracle untuk memintas had ini:
Tulis semula pernyataan DALAM:
Mana-mana pernyataan IN dalam format x IN (1,2,3) boleh ditulis semula sebagai (1,x) IN ((1,1), (1,2), (1,3)). Dengan melakukan ini, had 1000 elemen tidak lagi digunakan.
Contoh:
Pertimbangkan pertanyaan asal berikut dengan klausa IN yang mengandungi lebih daripada 1000 item:
<code class="language-sql">SELECT * FROM table_name WHERE column_name IN (1,2,...,1001);</code>
Menggunakan penyelesaian, ini boleh ditulis semula sebagai:
<code class="language-sql">SELECT * FROM table_name WHERE (1, column_name) IN ((1,1), (1,2),...,(1,1001));</code>
Impak prestasi:
Perlu diambil perhatian bahawa walaupun penyelesaian ini menyelesaikan isu sekatan klausa IN, ia mungkin memberi kesan kepada prestasi. Oracle biasanya menggunakan predikat akses dan imbasan julat untuk mengoptimumkan klausa IN. Penyelesaian ini boleh memecahkan pengoptimuman ini, mengakibatkan potensi penurunan prestasi.
Nota lain:
Atas ialah kandungan terperinci Bolehkah Oracle's SQL IN Clause Mengendalikan Lebih Daripada 1000 Item?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!