Ogólnie rzecz biorąc, jeśli IN
lista staje się zbyt duża (dla jakiejś źle zdefiniowanej wartości 'zbyt dużej', która zwykle mieści się w zakresie 100 lub mniejszym), bardziej efektywne staje się użycie złączenia, tworząc w razie potrzeby tabelę tymczasową do przechowywania liczb.
Jeśli liczby są gęstym zbiorem (bez przerw - co sugerują przykładowe dane), możesz zrobić jeszcze lepiej z WHERE id BETWEEN 300 AND 3000
.
Jednak prawdopodobnie w zestawie są luki, w którym to momencie może być lepiej skorzystać z listy poprawnych wartości (chyba że luk jest stosunkowo mało, w takim przypadku możesz użyć:
WHERE id BETWEEN 300 AND 3000 AND id NOT BETWEEN 742 AND 836
Albo jakiekolwiek są luki.