【发布时间】:2016-08-23 21:03:00
【问题描述】:
我有一个嵌套的 MySQL 查询,它在每个表中有超过 500000 条记录的表中存在关系。查询需要 60 秒才能获取结果,并且已在所有表中完成索引。
请建议减少它的执行时间。提前致谢。
SELECT t1.col1,t1.col2
FROM table1 AS t1
WHERE t1.col2 IN
(
SELECT DISTINCT(t2.col1) FROM table2 AS t2 WHERE t2.col2 IN
(
SELECT t3.col1
FROM table3 AS t3
WHERE t3.col2 = '04' ORDER BY t3.col1 ASC
)
ORDER BY t2.col1 ASC
)
【问题讨论】:
-
你为什么要使用排序???
-
您应该只订购您的最终结果集。尝试分析查询以查看导致执行时间长的原因;很可能是您拥有的
DISTINCT子句,因为它们通常会导致延迟。此外,您可以尝试使用JOIN而不是WHERE ... IN,因为这通常会更快。 -
支持@MartinParkin,您应该能够轻松地重写查询以使用连接而不是
where...in
标签: mysql