我目前遇到的问题是,当我在查询中使用“LIKE”时,我会在2秒内得到结果。但是当我使用'='代替时,结果显示大约需要1分钟。 以下是我的问题:
以下查询需要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%'`
将'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需要寻找不同的可能性。但我相信为什么在我的情况下,“=”会因为这么大的差异而变慢。
请提前感谢您的帮助,
的问候,
答案 0 :(得分:1)
当您使用=
时,与您使用LIKE
时相比,MySQL可能使用不同的索引。检查两个执行计划的输出,看看差异是什么。然后你可以FORCE使用性能更好的索引。可能值得为每个相关的表运行ANALYZE TABLE
。