Utilizzo di 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)
Utilizzo di 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
Spiegazione
La query più ottimale può essere determinata se le colonne confrontate tra le due tabelle sono NULL (IE:se i valori di specific_product_id
in entrambe le tabelle può essere NULL
).
- Se nullable,
NOT IN
oNOT EXISTS
è la scelta migliore in MySQL - Se NON nullable, `LEFT JOIN/IS NULL è la scelta migliore in MySQL
Addendum
Una volta determinata la query ottimale, dai un'occhiata a creazione indici (possibilmente a copertura degli indici) almeno per:
specific_product_id
TABLE_PRODUCT.astatus