哪个更快-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

回到顶部