Mulai dari sejumlah record tertentu, IN predikat di atas SELECT menjadi lebih cepat dari itu pada daftar konstanta.
Lihat artikel ini di blog saya untuk perbandingan kinerja:
Jika kolom yang digunakan dalam kueri di IN klausa diindeks, seperti ini:
SELECT *
FROM table1
WHERE unindexed_column IN
(
SELECT indexed_column
FROM table2
)
, maka kueri ini hanya dioptimalkan ke EXISTS (yang hanya menggunakan satu entri untuk setiap record dari table1 )
Sayangnya, MySQL tidak mampu melakukan HASH SEMI JOIN atau MERGE SEMI JOIN yang lebih efisien (terutama jika kedua kolom diindeks).