Rumah >pangkalan data >tutorial mysql >`LIKE` lwn. `=` dalam SQL: Bilakah Pemadanan Wildcard Lebih Cekap?

`LIKE` lwn. `=` dalam SQL: Bilakah Pemadanan Wildcard Lebih Cekap?

Barbara Streisand
Barbara Streisandasal
2025-01-05 07:37:43967semak imbas

`LIKE` vs. `=` in SQL: When is Wildcard Matching More Efficient?

Prestasi 'LIKE' vs '=' dalam SQL Apabila Menggunakan Kad Liar

Secara umumnya dipercayai bahawa '=' lebih cekap daripada 'LIKE' apabila menggunakan kad bebas dalam pertanyaan SQL. Walau bagaimanapun, ini mungkin tidak selalu berlaku.

Pertimbangkan contoh berikut:

SELECT * FROM table WHERE value LIKE 'abc%'
SELECT * FROM table WHERE value = 'abcdefghijklmn'

Dalam kes ini, 'LIKE' hanya perlu membandingkan tiga aksara pertama untuk mencari perlawanan. '=' mesti membandingkan keseluruhan rentetan. Oleh itu, nampaknya 'LIKE' akan mempunyai kelebihan dalam senario ini.

Walau bagaimanapun, penggunaan indeks boleh menjejaskan prestasi pertanyaan 'LIKE'. Seperti yang dinyatakan dalam artikel ini oleh Jonathan Nelson di MyITForum:

  • Jika kriteria penapis anda menggunakan '=' dan medan diindeks, ia mungkin akan menggunakan INDEX/CLUSTERED INDEX SEEK.
  • Jika kriteria penapis anda menggunakan 'LIKE' tanpa kad bebas, ia berkemungkinan besar menggunakan indeks seperti '='.
  • Jika kriteria penapis anda menggunakan 'SUKA' dengan kad bebas pada mulanya, kemungkinan besar untuk menggunakan indeks.
  • Walau bagaimanapun, jika kriteria penapis anda menggunakan 'SUKA ' dengan STRING FIRST dan mempunyai kad bebas di suatu tempat SELEPAS itu, SQL boleh menggunakan INDEX SEEK untuk mencari baris yang mempunyai aksara permulaan pertama yang sama dan kemudian melihat melalui baris tersebut untuk padanan tepat.

Oleh itu, prestasi pertanyaan 'LIKE' vs '=' dengan kad bebas bergantung pada pelbagai faktor, termasuk penggunaan indeks, lokasi kad bebas dan enjin SQL khusus yang digunakan .

Atas ialah kandungan terperinci `LIKE` lwn. `=` dalam SQL: Bilakah Pemadanan Wildcard Lebih Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn