【发布时间】:2021-07-05 21:55:47
【问题描述】:
我在一个相当复杂的网站(PHP 驱动)中使用 MySQL。
理想情况下,我可以使用一个工具来帮助我测试我正在使用的 SQL 查询并建议更好的表索引,从而提高性能并避免表扫描。
如果做不到这一点,它会告诉我每个查询的确切内容,因此我可以自己执行优化。
编辑:理解 EXPLAIN ... 输出的简单指南也会很有用。
谢谢。
【问题讨论】:
标签: mysql optimization
我在一个相当复杂的网站(PHP 驱动)中使用 MySQL。
理想情况下,我可以使用一个工具来帮助我测试我正在使用的 SQL 查询并建议更好的表索引,从而提高性能并避免表扫描。
如果做不到这一点,它会告诉我每个查询的确切内容,因此我可以自己执行优化。
编辑:理解 EXPLAIN ... 输出的简单指南也会很有用。
谢谢。
【问题讨论】:
标签: mysql optimization
这里有一些关于 EXPLAIN 的信息(引用自 O'Reilly 的高性能 MySQL 书):
当您对查询运行 EXPLAIN 时,它会以查询中涉及的每个表的报告的形式告诉您 MySQL 所知道的关于该查询的所有信息。
这些报告中的每一个都会告诉您...
这本书在提供这样的信息方面非常棒,所以如果你还没有,让你的老板签字同意购买。
否则,我希望一些知识渊博的 SO 用户可以提供帮助:)
【讨论】:
作为最简单的事情,启用慢查询日志并查看哪些查询很慢,然后尝试按照建议进行分析。
【讨论】:
那里可能有查询分析器,但首先要简单介绍一下 使用 mysql 命令行,然后输入“explain select * from foo where bar = 'abc'”。确保您最常见的查询使用索引,尽量避免顺序扫描或大表排序。
【讨论】:
EverSQL https://www.eversql.com
它将分析您的慢查询并生成索引并为您提供一些提示。
【讨论】:
您应该查看Maatkit,这是一个用于执行各种 MySQL 任务的开源工具包。如果没有关于您要调整的确切内容的更多信息,很难告诉您将使用哪些工具以及如何使用,但是文档非常好,并且涵盖了很多应用程序。
【讨论】:
我用于其余 sql 调整的工具 (SQLyog) 有一个包含分析器的新版本,太棒了! (我不为他们工作——我只是使用他们的产品)
【讨论】: