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运行第二个查询,我不记得确定哪一个,并报告该查询的查询时间而不是它似乎报告的查询时间。 I.E.甚至可能做SHOW TABLES
查询或类似的事情。但我现在没有时间研究它。
Ali的回答是不正确的,因为正如我所提到的,MySQL慢速日志将时间报告为20分钟,因此这不是浏览器渲染问题。
答案 0 :(得分:2)
报告的时间不正确,但可能会被误解。 phpMyAdmin以“ SQL_CALC_FOUND_ROWS ”静默执行另一个查询;这是你在MySQL慢日志中看到的:扫描所有行需要20分钟,但结果只有1行:结果计数。
在结果页面上,它将显示总结果计数(如何在不执行上述查询的情况下知道?)和实际结果的第一页。毕竟,phpMyAdmin非常正确地说查询(检索第一页!)只花了0.0024秒。它只是隐藏了用户昂贵的行计数查询。
答案 1 :(得分:-1)
phpMyAdmin中的查询时间只是数据库引擎从数据库中提取结果的时间。如果您从网页发送查询,则数据库应将结果解析为localhost,然后将其提供给浏览器,该浏览器将通过服务器配置并最终准备在浏览器中进行标记。另请注意,phpmyadmin会缓存查询,这可能会在您不期望时导致更快的响应。
答案 2 :(得分:-1)
报告的时间不正确,但可能会被误解。 phpMyAdmin静默地使用“ SQL_CALC_FOUND_ROWS”执行另一个查询;这就是您在MySQL慢日志中看到的:扫描所有行需要20分钟,但结果只有1行:结果计数。
--->这很正确