我有一个网络应用程序,它的每个页面都会触发很多查询。随着越来越多的数据被添加到数据库中,我们注意到页面的加载时间越来越长。
在检查 PhpMyAdmin -> Status -> Joins 时,我们注意到这一点(数字为红色):
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 - 在 CakePHP 中确定要在 MySQL 中建立索引的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11376267/