哪个更快-INSTR还是LIKE?
如果您的目标是测试MySQL列中是否存在字符串(类型为’varchar’,’text’,’blob’等),那么以下哪一项是更快/更有效/更好地使用,为什么?
或者,还有其他方法可以胜任这些方法吗?
INSTR( columnname, 'mystring' ) > 0
与
columnname LIKE '%mystring%'
回答:
正如kibibu在上述评论中指出的,FULLTEXT搜索绝对会更快。
但是 :
mysql> select COUNT(ID) FROM table WHERE INSTR(Name,'search') > 0;+-----------+
| COUNT(ID) |
+-----------+
| 40735 |
+-----------+
1 row in set (5.54 sec)
mysql> select COUNT(ID) FROM table WHERE Name LIKE '%search%';
+-----------+
| COUNT(ID) |
+-----------+
| 40735 |
+-----------+
1 row in set (5.54 sec)
在我的测试中,它们的表现完全相同。它们都不区分大小写,并且通常会执行全表扫描,这在处理高性能MySQL时通常是禁忌。
除非您在索引列上进行前缀搜索:
mysql> select COUNT(ID) FROM table WHERE Name LIKE 'search%';+-----------+
| COUNT(ID) |
+-----------+
| 7 |
+-----------+
1 row in set (3.88 sec)
在这种情况下,仅带有后缀通配符的LIKE要快得多。
以上是 哪个更快-INSTR还是LIKE? 的全部内容, 来源链接: utcz.com/qa/412258.html