首頁 > 資料庫 > mysql教程 > ## MySQL 模式匹配:LIKE 與 LOCATE:哪個比較快?

## MySQL 模式匹配:LIKE 與 LOCATE:哪個比較快?

DDD
發布: 2024-10-25 07:51:29
原創
261 人瀏覽過

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

比較MySQL LIKE 與LOCATE 的模式匹配效能

MySQL 提供了兩個主要函數來對字串執行模式比對操作:LIKE和定位。雖然兩者的用途相似,但它們在效能特徵上表現出細微的差異,從而影響查詢的效率。

LIKE 運算子利用通配符 (%) 來符合字串中的模式。例如:

<code class="sql">SELECT * FROM table WHERE column LIKE '%text%';</code>
登入後複製

LOCATE 函數則在字串中搜尋特定子字串的第一次出現並傳回其位置。非零結果表示匹配:

<code class="sql">SELECT * FROM table WHERE LOCATE('text', column) > 0;</code>
登入後複製

比較這兩個函數的效能時,通常觀察到 LIKE 運算子的執行速度略快於 LOCATE。這主要是因為LIKE 不需要額外的比較('> 0") 來確定是否存在匹配。

為了說明這種差異,讓我們考慮以下基準測試結果:

<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>
登入後複製

在此範例中,LIKE 略勝於LOCATE,執行1 億次迭代大約需要0.65 秒,但是,需要注意的是,效能差異可能會因字串的長度、模式而異。 MySQL 版本。

以上是## MySQL 模式匹配:LIKE 與 LOCATE:哪個比較快?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板