PostgreSQL's IN dan ANY operator: Mana satu untuk dipilih?
PostgreSQL menyediakan dua struktur, IN dan ANY, yang biasanya digunakan untuk membandingkan nilai dengan set. Walaupun fungsi logik kedua-dua struktur pada asasnya adalah sama (kedua-dua keahlian set ujian), ia mempunyai perbezaan yang ketara dalam sintaks dan prestasi.
Variasi Tatabahasa
IN mempunyai dua varian sintaks:
ANY juga mempunyai dua varian tatabahasa:
Kes Penggunaan
Nota Prestasi
Secara amnya, IN (koleksi) dan ANY (koleksi) berprestasi serupa, menggunakan imbasan indeks jika tersedia. Walau bagaimanapun, SEBARANG (tatasusunan) menggunakan imbasan berurutan tatasusunan, yang mungkin kurang cekap untuk tatasusunan besar.
Perbandingan dengan = MANA-MANA (set)
Walaupun IN (set) dan = ANY (set) adalah setara secara logik, dalam beberapa kes ia mungkin menghasilkan pelan pertanyaan yang berbeza. Menggunakan IN memaksa PostgreSQL untuk membuat jadual sementara untuk koleksi, yang mungkin menambah overhed.
Kepelbagaian
ANY lebih umum daripada IN kerana ia boleh digunakan dengan pelbagai operator (bukan hanya =). Sebagai contoh, anda boleh menggunakan SEBARANG dengan SUKA untuk menyemak padanan corak.
Kecualikan
Untuk mencari baris yang bukan dalam set, gunakan NOT (lajur = ANY (set)). Sebagai alternatif, anda boleh menggunakan SEMUA untuk tujuan ini.
Nilai NULL
Secara lalai, baris dengan nilai NULL tidak dibandingkan melalui IN atau ANY. Untuk memasukkan nilai NULL, anda boleh menggunakan IS NOT TRUE dengan perbandingan.
Atas ialah kandungan terperinci IN vs. ANY dalam PostgreSQL: Operator Mana Yang Harus Anda Pilih?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!