Usando 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)
Usando 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
Explicación
La consulta más óptima se puede determinar si las columnas que se comparan entre las dos tablas admiten valores NULL (es decir, si los valores de specific_product_id
en cualquiera de las tablas puede ser NULL
).
- Si anulables,
NOT IN
oNOT EXISTS
es la mejor opción en MySQL - Si NO admite valores NULL, `LEFT JOIN/IS NULL es la mejor opción en MySQL
Anexo
Una vez que se haya determinado la consulta óptima, eche un vistazo a creando índices (posiblemente cubriendo índices) por al menos:
specific_product_id
TABLE_PRODUCT.astatus