Mit 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)
Mit 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
Erklärung
Die optimalste Abfrage kann dadurch bestimmt werden, ob die zwischen den beiden Tabellen verglichenen Spalten NULL-fähig sind (d. h. wenn die Werte von specific_product_id
in jeder Tabelle kann NULL
sein ).
- Falls nullable,
NOT IN
oderNOT EXISTS
ist die beste Wahl in MySQL - Wenn NOT nullable, `LEFT JOIN/IS NULL ist die beste Wahl in MySQL
Nachtrag
Sobald die optimale Abfrage bestimmt wurde, werfen Sie einen Blick auf create Indizes (möglicherweise überdeckende Indizes) für mindestens:
specific_product_id
TABLE_PRODUCT.astatus