Използване на NOT EXISTS
SELECT p.*
FROM TABLE_PRODUCT p
WHERE p.astatus = 'APAST'
AND NOT EXISTS (SELECT NULL
FROM TABLE_USER_OWNED_AUCTION uoa
WHERE uoa.specific_product_id = p.specific_product_id)
Използване на LEFT JOIN/IS NULL
SELECT p.*
FROM TABLE_PRODUCT p
LEFT JOIN TABLE_USER_OWNED_AUCTION uoa ON uoa.specific_product_id = p.specific_product_id
WHERE p.astatus = 'APAST'
AND uoa.own_id IS NULL
Обяснение
Най-оптималната заявка може да се определи, ако колоните, сравнени между двете таблици, са NULL (IE:ако стойностите на specific_product_id
във всяка таблица може да бъде NULL
).
- Ако nullable,
NOT IN
илиNOT EXISTS
е най-добрият избор в MySQL - Ако НЕ може да се нула, `LEFT JOIN/IS NULL е най-добрият избор в MySQL
Допълнение
След като бъде определена оптималната заявка, разгледайте създаването индекси (евентуално обхващащи индекси) поне за:
specific_product_id
TABLE_PRODUCT.astatus