如何加快MySQL数据库中SQL查询的执行时间?

如何加快MySQL数据库中SQL查询的执行时间?,mysql,sql,performance,query-optimization,Mysql,Sql,Performance,Query Optimization,下面是我的SQL查询 SELECT `left_table`.`right_table_id`, MAX(left_table.add_time) AS max_add_time FROM `left_table` LEFT JOIN `right_table` ON `left_table`.`right_table_id` = `right_table`.`id` WHERE left_table.add_time <= NOW() AND

下面是我的SQL查询

SELECT `left_table`.`right_table_id`, MAX(left_table.add_time) AS max_add_time 
    FROM `left_table` 
    LEFT JOIN `right_table` ON `left_table`.`right_table_id` = `right_table`.`id` 
    WHERE left_table.add_time <= NOW()
        AND (
                (right_table.some_id = 1 AND right_table.category != -2)
                OR
                (right_table.another_id = 1 AND right_table.category != -1)
        ) AND NOT(right_table.category = -3) 
        AND NOT(right_table.category = -4) 
    GROUP BY `right_table_id` 
    ORDER BY `max_add_time` DESC, `left_table`.`id` DESC
LIMIT 12

执行此查询需要5356.6ms。这对我来说太长了。我一直在努力加快执行时间。但没有结果。如何提高上述查询的执行时间?

Hmmm。我将从这样的逻辑开始:

SELECT COUNT(DISTINCT lt.`right_table_id`)
FROM `left_table` lt LEFT JOIN
     `right_table` rt
      ON lt.`right_table_id` = rt.`id` 
WHERE lt.add_time <= NOW() AND
      ((rt.some_id = 1 AND rt.category <> -2) OR
       (rt.another_id = 1 AND rt.category <> -1)
      ) AND
      rt.category NOT IN (-3, -4);

根据lt.right_table_id是否始终匹配右表中的一行或是否为NULL,可能会有其他简化。以及各种其他注意事项。

您能分享解释计划吗?是否留有表格。添加时间索引?如果不是这样的话,那会提高MAX的效率。哥们,谢谢你的回答。不带计数功能的SELECT查询如何。我怎样才能加快速度呢。因为没有COUNT函数,执行时间也很长。