MySQL LIKE,额外通配符对性能的影响

时间:2017-07-05 14:31:51

标签: mysql performance sql-like text-search

假设我有一组包含以下数据的数据库行:

  • Blah1-Blah2-Blah3
  • Blah1-Blah3-Blah2

使用“Blah1-%”的LIKE查询是否比使用“Blah1 - % - %”的查询更快/更慢。显然在我的例子中,他们将检索两行,但希望你得到我来自的地方;最好是包含有关字符串包含在查询中的所有信息,或者如果可以,则省略信息。

我的想法是,查询中的更多信息可能会导致索引被更好地利用,或者因为它的查询更复杂,实际上会降低它的速度。我在数据库方面有相当多的经验,但是我没有理解技术层面上的密钥。对于知道的人来说,这可能是一个愚蠢的问题!

1 个答案:

答案 0 :(得分:0)

"Blah1-%-%"找不到"Blah1-foo",但另一个会找到LIKE。除此之外,......

查询涉及的主要时间是获取行,特别是如果它需要从磁盘中变红并解析它。任何表达式(包括带有额外通配符的LIKE)的成本都很小。

所有优化器与:checked一起决定是否以通配符开头(因此不允许索引)(从而让优化器考虑索引)。