3

MySQL 5.5

我正在尝试提高此查询的速度:

SELECT * FROM `core_table` WHERE `id` = '57' AND `model` IN (SELECT `new_models` FROM `raw_table`)

我试图通过运行在 phpMyAdmin 中对其进行基准测试:

SELECT SQL_NO_CACHE * FROM `core_table` WHERE `id` = '57' AND `model` IN (SELECT `new_models` FROM `raw_table`)

根据 MySQL 慢日志:Query_time: 1174.17, Rows_sent: 1 Rows_examined: 3006660068

phpMyAdmin 说“查询耗时 0.0024 秒”,这是完全错误的。花了20分钟。

为什么 phpMyAdmin 报告一个非常错误的值?这是一个可修复的错误还是我应该永远忽略 phpMyAdmin 查询时间?

编辑 2015-04-30

已经有一段时间了,我回来了,因为有人终于发布了答案。我似乎记得自己找到了一个可能的原因。我相信是 phpMyAdmin 运行了第二个查询,我无法确定是哪一个,并报告了该查询的查询时间,而不是它似乎正在报告的查询时间。IE 甚至可能会做一个SHOW TABLES查询或类似的事情。但我现在没有时间研究它。

阿里的回答是不正确的,因为正如我所说,MySQL 慢日志报告的时间为 20 分钟,所以这不是浏览器渲染问题。

4

3 回答 3

2

报告的时间不是错误的,但可能会被误解。phpMyAdmin 以“ SQL_CALC_FOUND_ROWS ”静默执行另一个查询;这是您在 MySQL 慢日志中看到的内容:扫描所有行需要 20 分钟,但结果只有 1 行:结果计数。

在结果页面上,它会显示结果总数(不做上面的查询怎么知道?)和实际结果的第一页。毕竟,phpMyAdmin 说查询(检索第一页!)只用了 0.0024 秒是非常正确的。它只是对用户隐藏了昂贵的行计数查询。

于 2015-07-13T09:19:16.313 回答
0

报告的时间不是错误的,但可能会被误解。phpMyAdmin 以“SQL_CALC_FOUND_ROWS”静默执行另一个查询;这是您在 MySQL 慢日志中看到的内容:扫描所有行需要 20 分钟,但结果只有 1 行:结果计数。

---> 这是完全正确的

于 2018-07-12T07:41:21.147 回答
-1

phpMyAdmin 中的查询时间只是数据库引擎从数据库中提取结果的时间。如果您从网页发送查询,数据库应将结果解析到本地主机,然后将其提供给您的浏览器,该浏览器通过服务器配置并最终准备在浏览器中进行标记。另请注意,phpmyadmin 会缓存查询,这可能会在您不期望的情况下导致更快的响应。

于 2015-04-19T10:32:39.860 回答