Duplicata possible :
Y a-t-il une différence de performance entre BETWEEN et IN avec MySQL ou SQL en général ?
Si j'ai les identifiants suivants :
1,2,3,4,5,6
Est-il préférable d'utiliser la clause IN ou la clause between pour la suppression ?
Duplicata possible :
Y a-t-il une différence de performance entre BETWEEN et IN avec MySQL ou SQL en général ?
Si j'ai les identifiants suivants :
1,2,3,4,5,6
Est-il préférable d'utiliser la clause IN ou la clause between pour la suppression ?
BETWEEN
.IN
.La performance ne devrait pas être le facteur décisif. Cela dit, BETWEEN semble être plus rapide dans tous les exemples que j'ai testés. Par exemple :
Sans index, vérification d'une table d'un million de lignes où chaque ligne a x = 1 :
SELECT COUNT(\*) FROM table1 WHERE x IN (1, 2, 3, 4, 5, 6);
Time taken: 0.55s
SELECT COUNT(\*) FROM table1 WHERE x BETWEEN 1 AND 6;
Time taken: 0.54s
Sans index, vérification d'une table d'un million de lignes où x a des valeurs uniques :
SELECT COUNT(\*) FROM table1 WHERE x IN (1, 2, 3, 4, 5, 6);
Time taken: 0.65s
SELECT COUNT(\*) FROM table1 WHERE x BETWEEN 1 AND 6;
Time taken: 0.36s
Un exemple plus réaliste est que la colonne id est unique et indexée. Dans ce cas, les performances des deux requêtes sont quasi instantanées.
SELECT COUNT(\*) FROM table2 WHERE x IN (1, 2, 3, 4, 5, 6);
Time taken: 0.00s
SELECT COUNT(\*) FROM table2 WHERE x BETWEEN 1 AND 6;
Time taken: 0.00s
Je dirais donc qu'il faut se concentrer sur la rédaction d'une instruction SQL claire plutôt que de se préoccuper de différences mineures dans la vitesse d'exécution. Et assurez-vous que la table est correctement indexée, car c'est ce qui fera la plus grande différence.
Note : Les tests ont été effectués sur SQL Server Express 2008 R2. Les résultats peuvent être différents sur d'autres systèmes.
L'intervalle est plus rapide car les comparaisons sont moins nombreuses. Avec la clause IN, chaque élément est parcouru à chaque fois.
Mais les objectifs des deux sont différents :
Entre est utilisé lorsque vous comparez des avec une série de valeurs dans une sorte de séquence.
IN est utilisé pour comparer des valeurs qui ne se suivent pas. séquence.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.