Mysql
 sql >> Database >  >> RDS >> Mysql

Prestazioni dell'operatore MySQL IN su un numero (grande?) di valori

In generale, se il IN list diventa troppo grande (per un valore mal definito di 'troppo grande' che di solito è nella regione di 100 o inferiore), diventa più efficiente usare un join, creando una tabella temporanea se necessario per contenere i numeri.

Se i numeri sono un insieme denso (nessuna lacuna, come suggeriscono i dati di esempio), puoi fare ancora meglio con WHERE id BETWEEN 300 AND 3000 .

Tuttavia, presumibilmente ci sono delle lacune nel set, a quel punto potrebbe essere meglio andare con l'elenco dei valori validi dopo tutto (a meno che le lacune non siano relativamente poche, nel qual caso potresti usare:

WHERE id BETWEEN 300 AND 3000 AND id NOT BETWEEN 742 AND 836

O qualunque siano le lacune.