Rumah >pangkalan data >tutorial mysql >IN vs. ANY dalam PostgreSQL: Bilakah Anda Harus Menggunakan Setiap Operator?
Perbandingan IN dan SEBARANG pengendali dalam PostgreSQL
Ikhtisar
PostgreSQL menyediakan dua struktur serupa, IN dan ANY, untuk memadankan nilai dengan set atau senarai. Walaupun fungsi logik mereka adalah sama, terdapat perbezaan yang ketara dalam sintaks dan penggunaan.
Sintaks dan padanan
DALAM:
SEBARANG:
Tetapkan padanan
IN dan ANY adalah setara untuk memadankan nilai terhadap set. Contohnya:
<code class="language-sql">SELECT * FROM table WHERE id IN (1, 2, 3); SELECT * FROM table WHERE id = ANY('{1, 2, 3}');</code>
Padanan tatasusunan
Walau bagaimanapun, terdapat varian sintaks tambahan ANY yang menyokong padanan array. Ini membolehkan anda membandingkan nilai dengan jenis data tatasusunan sebenar:
<code class="language-sql">SELECT * FROM table WHERE id = ANY(ARRAY[1, 2, 3]);</code>
Pengoptimuman Pertanyaan
Dalam sesetengah kes, pilihan antara IN dan ANY mempengaruhi pengoptimuman pertanyaan. Untuk koleksi besar, anda mungkin mendapat prestasi yang lebih baik dengan menghantar koleksi menggunakan struktur IN.
Ciri-Ciri Lain MANA-MANA
Contoh
Untuk menunjukkan perbezaan ini, pertimbangkan contoh berikut:
<code class="language-sql">SELECT * FROM table WHERE id IN ('1', '2', NULL, 3); SELECT * FROM table WHERE id = ANY('{1, 2, NULL, 3}');</code>
Ungkapan IN akan mengecualikan baris dengan nilai NULL, manakala SEBARANG ungkapan akan memasukkannya. Selain itu, SEBARANG ungkapan boleh menggunakan operator khusus tatasusunan, seperti id > ANY('{1, 2, 3}').
Atas ialah kandungan terperinci IN vs. ANY dalam PostgreSQL: Bilakah Anda Harus Menggunakan Setiap Operator?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!