一尘不染

MySQL不在极慢的地方

sql

下面是存储过程中的一条SQL语句( 为简洁起见,将其截断 ):

SELECT * 
FROM item a 
WHERE a.orderId NOT IN (SELECT orderId FROM table_excluded_item);

此语句需要30秒钟左右!但是,如果我删除内部的SELECT查询,它将降至1s。table_excluded_item不是很大,但是我怀疑内部查询的执行量超过了需要执行的次数。

有更有效的方法吗?


阅读 123

收藏
2021-05-16

共1个答案

一尘不染

使用 LEFT JOIN

SELECT  a.* 
FROM    item a 
        LEFT JOIN table_excluded_item b
            ON a.orderId = b.orderId
WHERE   b.orderId IS NULL

确保orderId两个表中的索引都已编入索引。

2021-05-16