## Padanan Corak MySQL: SUKA lwn LOCATE: Mana Lebih Cepat?

DDD
Lepaskan: 2024-10-25 07:51:29
asal
150 orang telah melayarinya

##  MySQL Pattern Matching: LIKE vs. LOCATE: Which is Faster?

Membandingkan Prestasi MySQL LIKE vs LOCATE untuk Padanan Corak

MySQL menyediakan dua fungsi utama untuk melaksanakan operasi pemadanan corak pada rentetan: LIKE dan LOCATE. Walaupun kedua-duanya mempunyai tujuan yang sama, ia mempamerkan perbezaan ketara dalam ciri prestasi yang boleh memberi kesan kepada kecekapan pertanyaan.

Pengendali LIKE menggunakan aksara kad bebas (%) untuk memadankan corak dalam rentetan. Contohnya:

<code class="sql">SELECT * FROM table WHERE column LIKE '%text%';</code>
Salin selepas log masuk

Fungsi LOCATE, sebaliknya, mencari kejadian pertama subrentetan tertentu dalam rentetan dan mengembalikan kedudukannya. Keputusan bukan sifar menunjukkan padanan:

<code class="sql">SELECT * FROM table WHERE LOCATE('text', column) > 0;</code>
Salin selepas log masuk

Apabila membandingkan prestasi kedua-dua fungsi ini, secara amnya diperhatikan bahawa pengendali LIKE melakukan lebih pantas sedikit daripada LOCATE. Ini disebabkan terutamanya oleh fakta bahawa LIKE tidak memerlukan perbandingan tambahan ('> 0") untuk menentukan sama ada padanan wujud.

Untuk menggambarkan perbezaan ini, mari kita pertimbangkan keputusan penanda aras berikut:

<code class="shell">mysql> SELECT BENCHMARK(100000000,LOCATE('foo','foobar'));
+---------------------------------------------+
| BENCHMARK(100000000,LOCATE('foo','foobar')) |
+---------------------------------------------+
|                                           0 |
+---------------------------------------------+

mysql> SELECT BENCHMARK(100000000,LOCATE('foo','foobar') > 0);
+-------------------------------------------------+
| BENCHMARK(100000000,LOCATE('foo','foobar') > 0) |
+-------------------------------------------------+
|                                               0 |
+-------------------------------------------------+

mysql> SELECT BENCHMARK(100000000,'foobar' LIKE '%foo%');
+--------------------------------------------+
| BENCHMARK(100000000,'foobar' LIKE '%foo%') |
+--------------------------------------------+
|                                          0 |
+--------------------------------------------+</code>
Salin selepas log masuk

Dalam contoh ini, LIKE sedikit mengatasi prestasi LOCATE, mengambil masa lebih kurang 0.65 saat untuk dilaksanakan selama 100 juta lelaran Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa perbezaan prestasi boleh berbeza-beza bergantung pada panjang rentetan, corak sedang dicari dan versi MySQL sedang digunakan.

Atas ialah kandungan terperinci ## Padanan Corak MySQL: SUKA lwn LOCATE: Mana Lebih Cepat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!