Les deux requêtes utiliseront un index.
La requête A sera traduite en :
select * from person where age = 1 or age = 2 or age 3;
La requête B se traduira par
select * from person where age >= 1 and age <= 3;
Donc la requête A fera 3 tests en utilisant OR.
La requête B fera 2 tests en utilisant AND.
La requête B est plus rapide.
En général, les requêtes utilisant AND
sont plus rapides que les requêtes utilisant OR
.
De plus, la requête B effectue moins de tests et, comme elle teste une plage, elle peut plus facilement exclure les résultats qu'elle ne souhaite pas.