下面是存储过程中的一条SQL语句( 为简洁起见,将其截断 ):
SELECT * FROM item a WHERE a.orderId NOT IN (SELECT orderId FROM table_excluded_item);
此语句需要30秒钟左右!但是,如果我删除内部的SELECT查询,它将降至1s。table_excluded_item不是很大,但是我怀疑内部查询的执行量超过了需要执行的次数。
table_excluded_item
有更有效的方法吗?
使用 LEFT JOIN
LEFT JOIN
SELECT a.* FROM item a LEFT JOIN table_excluded_item b ON a.orderId = b.orderId WHERE b.orderId IS NULL
确保orderId两个表中的索引都已编入索引。
orderId