我最近发现了如何从 EXPLAIN 为 SQL 提供的信息中受益,我认为我应该通过 EXPLAIN 子句运行所有查询,以查看是否有未优化的内容。原来我有,我不知道该怎么办..
如果我解释这个查询
SELECT `id`,`username`,`first_name`,`last_name`
FROM `users`
WHERE (`username` LIKE '%kelon%'
OR `email` LIKE '%kelon%'
OR `first_name` LIKE '%kelon%'
OR `last_name` LIKE '%kelon%'
OR `facebook` LIKE '%kelon%'
OR `twitter` LIKE '%kelon%'
OR `skype` LIKE '%kelon%')
我得到ALL
for type
,这显然是最坏的情况,即使我在所有列上都有索引,我也得到NULL
了。possible_keys
我怎样才能优化这个凌乱的查询,这样mysql就不会在几百万条记录的情况下跑掉?