MySQL LIKE 與 LOCATE:哪個更有效率?
在 MySQL 中執行模式比對查詢時,您有兩個主要選項:運算子和 LOCATE 函數。哪一種執行速度較快?
為了回答這個問題,讓我們使用一個簡單的基準測試來比較這兩種方法的效能。以下查詢使用LIKE 運算子查找列包含特定文字的行:
SELECT * FROM table WHERE column LIKE '%text%';
以下查詢使用LOCATE 函數執行相同的操作:
SELECT * FROM table WHERE LOCATE('text',column)>0;
針對大型資料集執行這些查詢表明LIKE 運算子稍微快一些,主要是因為它避免了LOCATE 所需的額外比較(> 0)。以下是基準測試的結果:
mysql> SELECT BENCHMARK(100000000,LOCATE('foo','foobar')); --------------------------------------------- | BENCHMARK(100000000,LOCATE('foo','foobar')) | --------------------------------------------- | 0 | --------------------------------------------- 1 row in set (3.24 sec) mysql> SELECT BENCHMARK(100000000,LOCATE('foo','foobar') > 0); ------------------------------------------------- | BENCHMARK(100000000,LOCATE('foo','foobar') > 0) | ------------------------------------------------- | 0 | ------------------------------------------------- 1 row in set (4.63 sec) mysql> SELECT BENCHMARK(100000000,'foobar' LIKE '%foo%'); -------------------------------------------- | BENCHMARK(100000000,'foobar' LIKE '%foo%') | -------------------------------------------- | 0 | -------------------------------------------- 1 row in set (4.28 sec) mysql> SELECT @@version; ---------------------- | @@version | ---------------------- | 5.1.36-community-log | ---------------------- 1 row in set (0.01 sec)
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3