【发布时间】:2012-12-19 12:29:12
【问题描述】:
以下是存储过程中的 SQL 语句(为了简洁而截断):
SELECT *
FROM item a
WHERE a.orderId NOT IN (SELECT orderId FROM table_excluded_item);
这个语句需要 30 秒左右!但是如果我删除内部 SELECT 查询,它会下降到 1s。 table_excluded_item 并不大,但我怀疑内部查询的执行次数超出了它的需要。
有没有更有效的方法?
【问题讨论】:
-
内部查询是一个依赖子查询,这是众所周知的瓶颈,因为子查询是针对外部查询的每一行运行的。在 MySQL 开发网站上查看 Optimizing Subqueries。
标签: mysql sql query-optimization