【问题标题】:Mysql LIKE vs REGEXP with 2 or more param带有2个或更多参数的Mysql LIKE vs REGEXP
【发布时间】:2013-10-07 07:44:14
【问题描述】:

在大数据上哪个会更快更好?

SELECT * FROM 'table' where name LIKE 'micky%' OR name LIKE 'molly%'

SELECT * FROM 'table' where name REGEXP '(^micky | ^molly)'

当参数超过10个时,会不会让慢的变快?

【问题讨论】:

  • 自己尝试一下并对结果进行基准测试?您应该发现,使用name 上的索引,第一种方法会快得多;而如果 name 未编入索引,则差异可能微不足道(第二种方法可能更快,具体取决于 MySQL 的模式匹配优化)。
  • 参数增加到10或100会有什么影响?将 LIKE OR 组合总是比正则表达式更快| ?或者由于 LIKE 比 REGEXP 快得多,因此差异微不足道。

标签: mysql regex sql-like


【解决方案1】:

查询速度取决于数据库结构的索引。 如果'SELECT'查询包含索引参数,那么你应该使用'LIKE',前提是通配符不是第一个字符。但是如果你的结构中没有索引,那么你可以使用它们中的任何一个。最好测试两种情况下花费的时间。

【讨论】:

    【解决方案2】:

    MySQL 正则表达式不会使用索引,但 LIKE 会在可能的情况下使用索引。因为在这种情况下,您的搜索不以通配符开头,所以 LIKE 将使用可用的索引。

    所以答案是,如果你在搜索名字,你应该有一个索引,当你这样做时,在这种情况下 LIKE 会更快。

    【讨论】:

      猜你喜欢
      • 2016-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多