Optimumkan pertanyaan MySQL untuk memadankan berbilang corak dengan cekap
Pertanyaan berikut direka bentuk untuk mendapatkan semula baris daripada jadual fiberbox
di mana nilai lajur fiberBox
sepadan dengan corak tertentu, menggunakan berbilang keadaan ATAU digabungkan dengan operator LIKE. Walau bagaimanapun, pengguna telah menyatakan minat untuk meneroka sintaks LIKE IN()
yang tidak disokong secara asli dalam MySQL.
Untuk mencapai kefungsian yang diingini, pertimbangkan untuk menggunakan ungkapan biasa (REGEXP) dan bukannya LIKE IN()
. REGEXP membolehkan anda memadankan nilai lajur dengan berbilang corak pada masa yang sama, memberikan alternatif yang lebih cekap dalam beberapa kes.
Berikut ialah pertanyaan REGEXP yang dioptimumkan yang mencapai tugas yang sama:
<code class="language-sql">SELECT * FROM fiberbox WHERE field REGEXP '1740|1938|1940';</code>
Dalam pertanyaan ini, operator REGEXP digunakan untuk memadankan nilai lajur field
terhadap tiga corak yang dipisahkan oleh simbol paip (|). Pendekatan ini lebih cekap daripada menggunakan berbilang keadaan ATAU dengan LIKE, terutamanya apabila berurusan dengan sejumlah besar corak.
Walau bagaimanapun, adalah disyorkan untuk menanda aras kedua-dua pendekatan untuk menentukan penyelesaian terbaik bagi set data khusus anda dan senario penggunaan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan Pertanyaan MySQL Memadankan Pelbagai Corak dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!