Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Semak Kewujudan Elemen Array dengan Cekap dalam PostgreSQL?
Cari elemen tatasusunan dengan cekap dalam PostgreSQL
Dalam PostgreSQL 9.0 dan ke atas, menyemak sama ada nilai wujud dalam tatasusunan boleh menjadi satu cabaran. Artikel ini memperkenalkan tiga kaedah untuk menyelesaikan masalah ini:
1. Persimpangan tatasusunan:
<code class="language-sql">select '{1,2,3}'::int[] @> (ARRAY[]::int[] || value_variable::int)</code>
Kaedah ini menambahkan nilai pada tatasusunan kosong dan kemudian bersilang dengan tatasusunan asal. Jika nilai wujud, hasilnya adalah benar.
2. Perbandingan tatasusunan:
<code class="language-sql">select '{1,2,3}'::int[] @> ARRAY[value_variable::int]</code>
Ini ialah kaedah ringkas yang membandingkan tatasusunan asal kepada tatasusunan elemen tunggal yang mengandungi nilai. Jika hasilnya benar, nilai itu wujud dalam tatasusunan asal.
3. MANA-MANA struktur:
<code class="language-sql">SELECT value_variable = ANY ('{1,2,3}'::int[])</code>
SEBARANG pembinaan membolehkan penyelesaian yang lebih bersih. Ia menguji sama ada nilai sepadan dengan mana-mana elemen dalam koleksi yang diwakili oleh tatasusunan.
Pertimbangan prestasi:
Apabila menggunakan tatasusunan PostgreSQL untuk memanipulasi ungkapan, pastikan anda mempertimbangkan kesan prestasi. Pengendali tatasusunan (contohnya, @>) dioptimumkan untuk digunakan dengan indeks GIN atau GiST. Walau bagaimanapun, konstruk SEBARANG digunakan dengan indeks B-tree untuk ungkapan indeks pada operan kiri. Jadi untuk kecekapan maksimum, pastikan operan kiri ANY (value_variable
dalam kes ini) diindeks.
Pengendalian nilai nol:
Sila ambil perhatian bahawa tiada kaedah ini berfungsi pada elemen NULL. Untuk menyemak nilai NULL dalam tatasusunan, sila rujuk sumber tambahan yang disediakan dalam bahagian jawapan soalan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Semak Kewujudan Elemen Array dengan Cekap dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!