Gebruik 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)
Gebruik 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
Uitleg
De meest optimale query kan worden bepaald door of de kolommen die tussen de twee tabellen worden vergeleken NULL-able zijn (IE:als de waarden van specific_product_id
in beide tabellen kan NULL
. zijn ).
- Als nullable,
NOT IN
ofNOT EXISTS
is de beste keuze in MySQL - Als NIET nullable, `LEFT JOIN/IS NULL is de beste keuze in MySQL
Aanvulling
Zodra de optimale zoekopdracht is bepaald, bekijkt u creating indexen (mogelijk indexen dekkend) voor ten minste:
specific_product_id
TABLE_PRODUCT.astatus