如何加快MySQL数据库中SQL查询的执行时间?
下面是我的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
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函数,执行时间也很长。