最初我试图在我的脚本中找到慢查询。困扰我的一件事是INSERT
查询,因为我在表中有几个索引(据我所知,在这种情况下插入不会是即时的,因为每次都应该重新计算索引)。
我的托管公司(siteground)限制我访问 MySQL 日志以调查慢查询的实际情况。所以我需要搜索任何绕过方式来找到问题。
现在我只是在 phpmyadmin 中执行可疑查询并检查查询所花费的时间是否正常。
但是我看到了这种方法的一些弱点:
我将根据当前服务器负载获得执行时间。因此,如果服务器当时很忙,我会夸大时间。
如果查询被缓存,我会被低估的时间。
我需要真正更改数据库数据以检查查询。像这样的查询是可以的
SELECT
,但是对于DELETE
and就变得棘手了UPDATE
。
所以最好使用另一种方法。EXPLAIN
可以是一个很好的解决方案,除非:
EXPLAIN
仅适用SELECT
于我的数据库服务器上的查询(我有 MySQL 服务器的 5.5.32 版本,来自文档的引用:在 MySQL 5.6.3 之前,SELECT 是唯一可解释的语句)。我可以解释UPDATE
并DELETE
通过EXPLAIN SELECT
替换(正确吗?)但EXPLAIN INSERT
仍然是一个大问题。
所以问题是:
如果至少有一个索引,我说得对
INSERT
吗?我可以
EXPLAIN UPDATE
通过DELETE
替换EXPLAIN SELECT
吗?除了提到的 phpmyadmin 执行和 EXPLAIN 之外,还可以使用哪些方法来调查查询速度?
我正在使用InnoDB
引擎。