Използване на 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_idTABLE_PRODUCT.astatus