代码之家  ›  专栏  ›  技术社区  ›  Ben

无法复制已检查的慢速查询日志行

  •  1
  • Ben  · 技术社区  · 14 年前

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

    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
    

    过滤意味着什么?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Konerak    14 年前

    你能把查询和 SHOW CREATE TABLE

    58确实不高,但是 您正在使用临时表和文件排序 USING WHERE 注释)

    EXPLAIN EXTENDED SHOW WARNINGS