NOT IN ( SELECT ... )
được tối ưu hóa rất kém, đặc biệt là trong các phiên bản cũ hơn.
Thay đổi thành này:
SELECT abc.*
FROM abc
LEFT JOIN zyx ON zyx.abc_id = abc.id
WHERE zyx.abc_id IS NULL;
AND zyx.id = 12345 ;
Đối với zyx, có INDEX(id, abc_id)
hoặc INDEX(abc_id, id)
Nếu zyx.id
là PRIMARY KEY
, truy vấn của bạn không có nhiều ý nghĩa - tại sao phải kiểm tra một hàng (12345)?