Startende fra et bestemt antal poster, IN prædikat over en SELECT bliver hurtigere end det over en liste med konstanter.
Se denne artikel i min blog for sammenligning af ydeevne:
Hvis kolonnen brugt i forespørgslen i IN klausul er indekseret, sådan her:
SELECT *
FROM table1
WHERE unindexed_column IN
(
SELECT indexed_column
FROM table2
)
, så er denne forespørgsel bare optimeret til en EXISTS (som kun bruger én indgang for hver post fra table1 )
Desværre, MySQL er ikke i stand til at udføre HASH SEMI JOIN eller MERGE SEMI JOIN som er endnu mere effektive (især hvis begge kolonner er indekseret).