繁体   English   中英

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

[英]How to speed up the SQL query execution time in MySQL database?

以下是我的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 我花了太长时间。 我一直在尝试并试图加快执行时间。 但是没有结果。 如何改善上述查询的执行时间?

嗯。 我将从编写这样的逻辑开始:

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 )。 以及其他各种考虑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM