Over het algemeen geldt dat als de IN
lijst te groot wordt (voor een slecht gedefinieerde waarde van 'te groot' die meestal in de buurt van 100 of kleiner ligt), wordt het efficiënter om een join te gebruiken, en indien nodig een tijdelijke tabel te maken om de getallen vast te houden.
Als de getallen een dichte verzameling zijn (geen gaten - wat de voorbeeldgegevens suggereren), dan kun je het nog beter doen met WHERE id BETWEEN 300 AND 3000
.
Vermoedelijk zijn er echter hiaten in de set, en op dat moment is het misschien beter om toch de lijst met geldige waarden te gebruiken (tenzij de hiaten relatief klein zijn in aantal, in welk geval u zou kunnen gebruiken:
WHERE id BETWEEN 300 AND 3000 AND id NOT BETWEEN 742 AND 836
Of wat de hiaten ook zijn.