Entrambe le query utilizzeranno un indice.
La query A verrà tradotta in:
select * from person where age = 1 or age = 2 or age 3;
La query B verrà tradotta in
select * from person where age >= 1 and age <= 3;
Quindi la query A eseguirà 3 test utilizzando OR.
La query B eseguirà 2 test utilizzando AND.
La query B è più veloce.
In generale, le query che utilizzano AND
sono più veloci delle query che utilizzano OR
.
Anche la query B esegue meno test e poiché sta testando un intervallo può escludere più facilmente risultati che non desidera.