首页 >数据库 >mysql教程 >## MySQL LIKE 与 LOCATE:模式匹配哪个更快?

## MySQL LIKE 与 LOCATE:模式匹配哪个更快?

DDD
DDD原创
2024-10-25 01:52:30882浏览

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

MySQL LIKE 与 LOCATE:哪个更高效?

在 MySQL 中执行模式匹配查询时,您有两个主要选项: LIKE运算符和 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)

以上是## MySQL LIKE 与 LOCATE:模式匹配哪个更快?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn