我刚开始使用PHP事件探查器在php脚本中查找导致mysql查询缓慢的文件。有人建议我使用 xdebug 从慢日志文件条目中的时间戳(与在同一时间戳中执行的php profiler中的文件相比)进行跟踪。
我已阅读xdebug文档,但找不到此问题的解释。
谁能给我启示?
我正在使用php 7.0,Debian 9。
我的慢速查询日志文件条目:
# Thread_id: 222244 Schema: user QC_hit: No
# Query_time: 51.019708 Lock_time: 0.000119 Rows_sent: 1 Rows_examined: 13295012
# Rows_affected: 0
SET timestamp=1559388099;
SELECT (COUNT(*)) AS `count`
FROM statistics Statistics WHERE (id >= 1 AND ad_type <> 3);
编辑:
这与计数SELECT语句中的行无关,而与如何跟踪导致缓慢请求发生的应用程序文件有关。
答案 0 :(得分:0)
对大表进行计数的最有效方法是,您应该将计数存储在其他地方的表中,并在需要时增加/减小该值,这样,您只查询单个单元格,而51秒查询变得小于1秒。
我知道做起来很多余,但这是最有效,最优化的方法
围绕着一些主题,这些主题建议查询INFORMATION_SCHEMA,但是鉴于您对WHERE
的需求,这完全没有帮助,其他所有问题与您在此遇到的问题一样无效。
您需要的只是当前计数,存储它的位置,增加/减少它的功能,您就可以了