使用'='进行Mysql查询比'LIKE'慢得多

时间:2012-03-15 19:26:01

标签: mysql

我目前遇到的问题是,当我在查询中使用“LIKE”时,我会在2秒内得到结果。但是当我使用'='代替时,结果显示大约需要1分钟。 以下是我的问题:

  • QUERY1

以下查询需要2秒钟:

`select distinct p.Name from Timeset s 
join table1 f on (f.id = s.id) 
join table2 p on (p.source=f.table_name) 
join table3 d on (d.Name = p.Name) WHERE 
 s.Active = 'Y' AND **p.sourcefrom like '%sometable%'`
  • QUERY2

将'like'替换为'='的同一查询需要1分钟:

select distinct p.Name from Timeset s 
join table1 f on (f.id = s.id) 
join table2 p on (p.source=f.table_name) 
join table3 d on (d.Name = p.Name) WHERE 
 s.Active = 'Y' AND **p.sourcefrom = 'sometable'

我真的很困惑,因为我知道'LIKE'通常较慢(比'='),因为mysql需要寻找不同的可能性。但我相信为什么在我的情况下,“=”会因为这么大的差异而变慢。

请提前感谢您的帮助,

的问候,

1 个答案:

答案 0 :(得分:1)

当您使用=时,与您使用LIKE时相比,MySQL可能使用不同的索引。检查两个执行计划的输出,看看差异是什么。然后你可以FORCE使用性能更好的索引。可能值得为每个相关的表运行ANALYZE TABLE