Menggunakan 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)
Menggunakan 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
Penjelasan
Kueri yang paling optimal dapat ditentukan dengan jika kolom yang dibandingkan antara dua tabel adalah NULLable (IE:jika nilai specific_product_id
di salah satu tabel dapat berupa NULL
).
- Jika nullable,
NOT IN
atauNOT EXISTS
adalah pilihan terbaik di MySQL - Jika NOT nullable, `LEFT JOIN/IS NULL adalah pilihan terbaik di MySQL
Tambahan
Setelah kueri optimal ditentukan, lihat membuat indeks (mungkin mencakup indeks) setidaknya:
specific_product_id
TABLE_PRODUCT.astatus