Rumah >pangkalan data >tutorial mysql >Bagaimanakah Jadual Sementara Boleh Meningkatkan Kecekapan Apabila Menggunakan Berbilang Keadaan LIKE dalam SQL?
Gunakan jadual sementara untuk mengendalikan berbilang keadaan dalam operator LIKE
Dalam SQL, operator LIKE digunakan untuk melakukan padanan corak pada nilai rentetan. Walaupun ada kemungkinan untuk menggabungkan berbilang keadaan LIKE menggunakan operator OR, penyelesaian yang lebih baik ialah menggunakan jadual sementara.
Pertimbangkan pernyataan berikut:
<code class="language-sql">select * from tbl where col like ('ABC%','XYZ%','PQR%');</code>
Pernyataan ini direka bentuk untuk mendapatkan semula semua baris dalam jadual tbl di mana lajur kol sepadan dengan mana-mana corak ABC%, XYZ% atau PQR%. Walaupun menggunakan OR adalah pendekatan yang cekap, untuk sejumlah besar keadaan ia boleh menjadi membosankan dan tidak cekap.
Sebaliknya, kita boleh mencipta jadual sementara yang dipanggil corak untuk menyimpan semua corak yang ingin kita padankan:
<code class="language-sql">CREATE TEMPORARY TABLE patterns ( pattern VARCHAR(20) ); INSERT INTO patterns VALUES ('ABC%'), ('XYZ%'), ('PQR%');</code>
Selepas mencipta jadual sementara, kita boleh menyertainya dengan jadual tbl menggunakan operator LIKE:
<code class="language-sql">SELECT t.* FROM tbl t JOIN patterns p ON (t.col LIKE p.pattern);</code>
Dalam pertanyaan ini, lajur corak dalam jadual corak digunakan untuk memadankan lajur kol dalam jadual tbl. Hasilnya ialah senarai baris dalam tbl yang sepadan dengan mana-mana corak dalam jadual corak.
Perlu ambil perhatian bahawa jika baris dalam tbl sepadan dengan berbilang corak, baris itu akan muncul berbilang kali dalam hasil carian. Jika ini tidak diingini, anda boleh menggunakan pengubah suai pertanyaan DISTINCT:
<code class="language-sql">SELECT DISTINCT t.* FROM tbl t JOIN patterns p ON (t.col LIKE p.pattern);</code>
Ini akan memastikan bahawa setiap baris dalam tbl hanya muncul sekali dalam hasil carian, walaupun ia sepadan dengan berbilang corak.
Atas ialah kandungan terperinci Bagaimanakah Jadual Sementara Boleh Meningkatkan Kecekapan Apabila Menggunakan Berbilang Keadaan LIKE dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!