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).