我有一个Web应用程序,每个页面都会触发相当多的查询.随着更多数据被添加到数据库中,我们注意到页面的加载时间越来越长.
在检查PhpMyAdmin – >状态 – >加入,我们注意到这一点(数字为红色):
Select_full_join 348.6 k不使用索引的联接数.如果此值不为0,则应仔细检查表的索引.
>如何确定导致问题的连接?是否所有联合都受到指责?
>如何确定应将哪些列编入索引,以确保性能正常?
我们正在使用CakePHP MySQL,并且查询都是自动生成的.
最佳答案
我一直使用的经验法则是,如果我使用连接,我加入的字段需要编入索引.
例如,如果您有如下查询:
SELECT t1.name,t2.salary
FROM employee AS t1
INNER JOIN info AS t2 ON t1.name = t2.name;
应该为t1.name和t2.name编制索引.
以下是一些很好的读物:
Optimizing MySQL: Importance of JOIN Order
How to optimize MySQL JOIN queries through indexing
一般来说,这家伙的网站也有一些很好的信息.
MySQL Optimizer Team
编辑:这总是有用的.
如果您有权访问您的服务器设置,请查看:
MySQL Slow Server Logs
一旦你有慢速查询的日志,你可以使用解释来查看需要索引的内容.