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

Sam*_*dra 5 mysql database indexing cakephp join

我有一个Web应用程序,每个页面都会触发相当多的查询.随着更多数据被添加到数据库中,我们注意到页面的加载时间越来越长.

在检查PhpMyAdmin - > Status - > Joins时,我们注意到了这一点(数字为红色):

Select_full_join 348.6 k不使用索引的联接数.如果此值不为0,则应仔细检查表的索引.

  1. 如何确定导致问题的连接?是否所有联合都受到指责?
  2. 如何确定哪些列应编入索引,以确保性能正常?

我们正在使用CakePHP + MySQL,并且查询都是自动生成的.

Sup*_*kEl 9

我一直使用的经验法则是,如果我使用连接,我加入的字段需要编入索引.

例如,如果您有如下查询:

SELECT t1.name, t2.salary
    FROM employee AS t1 
    INNER JOIN info AS t2 ON t1.name = t2.name;
Run Code Online (Sandbox Code Playgroud)

应该为t1.name和t2.name编制索引.

以下是一些很好的读物:

优化MySQL:JOIN订单的重要性

如何通过索引优化MySQL JOIN查询

一般来说,这家伙的网站也有一些很好的信息.

MySQL优化工具团队

编辑:这总是有用的.

如果您有权访问您的服务器设置,请查看:

MySQL慢速服务器日志

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