我最近发现了如何从 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%')
我得到ALLfor type,这显然是最坏的情况,即使我在所有列上都有索引,我也得到NULL了。possible_keys我怎样才能优化这个凌乱的查询,这样mysql就不会在几百万条记录的情况下跑掉?