无法复制慢查询日志 rows_examined

发布于 2024-10-01 01:12:38 字数 1822 浏览 0 评论 0原文

我有一个查询,根据我的慢速查询日志,它有点慢......

Query_time: 8.408943  Lock_time: 0.000119 Rows_sent: 1  Rows_examined: 2911766

但是,当我在其前面运行带有 EXPLAIN 的查询时,我没有得到相同的结果。

id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY forum range PRIMARY PRIMARY 4 NULL 3 Using where; Using temporary; Using filesort
1 PRIMARY category ref PRIMARY,forum_id forum_id 4 source_forum.forum.id 2  
1 PRIMARY board ref PRIMARY,category_id category_id 4 source_forum.category.id 4 Using where
1 PRIMARY topic ref PRIMARY,board_id board_id 4 source_forum.board.id 58  
1 PRIMARY post ref PRIMARY,topic_id,trash topic_id 4 source_forum.topic.id 16 Using where
3 DEPENDENT SUBQUERY post index topic_id created 4 NULL 1 Using where
2 DEPENDENT SUBQUERY group_assoc ref board_id,group_id board_id 4 source_forum.board.id 4 Using where

正在使用的最高行数是 56...

更新

我的查询:

SELECT
   COUNT(id) AS num
FROM (
    SELECT topic.*,
      (SELECT created FROM post WHERE topic_id = topic.id ORDER BY created DESC LIMIT 1) AS lastpost
    FROM topic
    WHERE board_id = 6 AND
    NOT EXISTS( SELECT id FROM topic_read_assoc WHERE topic_id = topic.id AND member_id = 489 )            
    ) tab
WHERE last_post_time > 1288032259;

解释扩展

id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 440 100.00 Using where
2 DERIVED topic ref board_id board_id 4   429 100.00 Using where
4 DEPENDENT SUBQUERY topic_read_assoc ref topic_id,member_id topic_id 4 source_forum.topic.id 6 100.00 Using where
3 DEPENDENT SUBQUERY post index topic_id created 4 NULL 1 1600.00 Using where

过滤是什么意思?

I have a query that according to my slow query log it's a bit slow....

Query_time: 8.408943  Lock_time: 0.000119 Rows_sent: 1  Rows_examined: 2911766

BUT, when I run the query with EXPLAIN in front of it, I don't get the same results...

id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY forum range PRIMARY PRIMARY 4 NULL 3 Using where; Using temporary; Using filesort
1 PRIMARY category ref PRIMARY,forum_id forum_id 4 source_forum.forum.id 2  
1 PRIMARY board ref PRIMARY,category_id category_id 4 source_forum.category.id 4 Using where
1 PRIMARY topic ref PRIMARY,board_id board_id 4 source_forum.board.id 58  
1 PRIMARY post ref PRIMARY,topic_id,trash topic_id 4 source_forum.topic.id 16 Using where
3 DEPENDENT SUBQUERY post index topic_id created 4 NULL 1 Using where
2 DEPENDENT SUBQUERY group_assoc ref board_id,group_id board_id 4 source_forum.board.id 4 Using where

The highest row count there being used is 56...

update

My query:

SELECT
   COUNT(id) AS num
FROM (
    SELECT topic.*,
      (SELECT created FROM post WHERE topic_id = topic.id ORDER BY created DESC LIMIT 1) AS lastpost
    FROM topic
    WHERE board_id = 6 AND
    NOT EXISTS( SELECT id FROM topic_read_assoc WHERE topic_id = topic.id AND member_id = 489 )            
    ) tab
WHERE last_post_time > 1288032259;

explain extended

id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 440 100.00 Using where
2 DERIVED topic ref board_id board_id 4   429 100.00 Using where
4 DEPENDENT SUBQUERY topic_read_assoc ref topic_id,member_id topic_id 4 source_forum.topic.id 6 100.00 Using where
3 DEPENDENT SUBQUERY post index topic_id created 4 NULL 1 1600.00 Using where

What does filtered mean?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

红墙和绿瓦 2024-10-08 01:12:38

您也可以发布查询和 SHOW CREATE TABLE 语句吗?

58 确实不高,但是您正在使用临时表和文件排序。由于所有类型都是 ref 而不是 eq_ref,因此您必须将这些值相乘: 3*2*4*58*16*1*4 = 89k 行连接(请参阅检查的行 - 有些表可能已完全扫描 - 请参阅USING WHERE 评论)

您可以发布 EXPLAIN EXTENDEDSHOW WARNINGS 吗?

Can you post the query and the SHOW CREATE TABLE statements too?

58 indeed is not high, but you are using temporary tables AND a filesort. And since all your types are ref and not eq_ref, you have to multiply those values: 3*2*4*58*16*1*4 = 89k rows joined (see the rows examined - some tables probably got scanned entirely - see the USING WHERE comment)

Can you post an EXPLAIN EXTENDED and SHOW WARNINGS?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文