在CakePHP中确定要在MySQL中索引的列

我有一个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

一旦你有慢速查询的日志,你可以使用解释来查看需要索引的内容.

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注