Generelt set, hvis IN
listen bliver for stor (for en dårligt defineret værdi af 'for stor', der normalt er i området omkring 100 eller mindre), bliver det mere effektivt at bruge en join, der skaber en midlertidig tabel, hvis det er nødvendigt for at indeholde tallene.
Hvis tallene er et tæt sæt (ingen mellemrum - hvilket eksempeldataene antyder), så kan du gøre det endnu bedre med WHERE id BETWEEN 300 AND 3000
.
Men formodentlig er der huller i sættet, på hvilket tidspunkt det kan være bedre at gå med listen over gyldige værdier trods alt (medmindre hullerne er relativt få i antal, i hvilket tilfælde du kan bruge:
WHERE id BETWEEN 300 AND 3000 AND id NOT BETWEEN 742 AND 836
Eller hvad hullerne nu er.