我们有一个现有的 PHP/MySQL 应用程序没有正确配置索引(监控显示我们进行了 85% 的表扫描,哎呀!)
确定我们应该将索引放在哪里的一个好的过程是什么?
我们正在使用 PHP(Kohana 使用 ORM 进行数据库访问)和 MySQL。
答案可能取决于很多事情。例如,如果您想不惜一切代价优化 SELECT,或者 INSERT 是否对您也很重要,您的策略可能会有所不同。您最好阅读 MySQL Performance Tuning 书籍或网站。有几个体面到伟大的。
如果您有慢查询日志,请检查它以查看是否存在导致问题的特定查询。 http://dev.mysql.com/doc/refman/5.5/en/slow-query-log.html
如果您知道将要运行的查询类型或通过慢查询日志或其他机制识别出有问题的查询,则可以使用 EXPLAIN 命令获取有关这些查询的一些统计信息。http://dev.mysql.com/doc/refman/5.5/en/explain.html
获得 EXPLAIN 的输出后,您可以使用它进行优化。见http://dev.mysql.com/doc/refman/5.5/en/using-explain.html
索引不仅仅用于主键或唯一键。如果您要搜索的表中有任何列,您几乎应该始终为它们编制索引。
我认为这将帮助您解决数据库问题。
http://net.tutsplus.com/tutorials/other/top-20-mysql-best-practices/