比較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中文網其他相關文章!