当前位置: 首页 > 面试题库 >

哪个更快-INSTR还是LIKE?

锺离阿苏
2023-03-14
问题内容

如果您的目标是测试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要快得多。



 类似资料:
  • 这是一位高级经理问的面试问题。 哪个更快? 我说过,这两者具有相同的执行速度,因为内部的表达式最终应计算为或。在这种情况下,两者的计算结果都为,条件中没有额外的条件指令。因此,两者的执行速度相同,我更喜欢while(1)。 但面试官自信地说:“检查一下你的基础,比要快。”(他不是在考验我的信心) 这是真的吗?

  • 问题内容: 可以说我有一个图,想看看是否。哪个实施速度更快,为什么? 要么 显然,这过于简单了,但可以想象该图变得非常密集。 问题答案: 集合中的成员资格测试要快得多,尤其是对于大型集合。这是因为该集合使用哈希函数来映射到存储桶。由于Python实现会自动调整该哈希表的大小,因此无论集合的大小如何,速度都可以保持恒定()(假设哈希函数足够好)。 相反,要评估对象是否为列表的成员,Python必须比

  • 问题内容: 我知道我们可以进行相关的子查询并加入。但是哪一个更快?有黄金法则还是我必须同时衡量这两者? 问题答案: 首先,相关子查询实际上是联接的一种。关于哪一个产生最佳执行计划没有黄金法则。如果您对性能感兴趣,则需要尝试不同的表格以查看最有效的方法。或者,至少,看看执行该决定的执行计划。 通常,出于两个原因,我倾向于避免关联子查询。首先,几乎总是可以在没有相关性的情况下编写它们。其次,许多查询引

  • 我有这样的表达: 以下哪些元素(

  • 想改进这个问题吗?更新问题,以便通过编辑这篇文章用事实和引用来回答。 我在玩Java*流API,在Lagecy系统中有以下代码: 我编写了与上述代码等价的流,如下所示: 无论哪种方式,我都得到了想要的结果。我的问题是,在这种情况下,哪种性能方面是更好的写作方式?如果我选择其中任何一个而不是另一个,我实际上是否获得了任何价值?地图中包含大约 1000 个值。