Оба запроса будут использовать индекс.
Запрос A будет переведен на:
select * from person where age = 1 or age = 2 or age 3;
Запрос B будет переведен в
select * from person where age >= 1 and age <= 3;
Таким образом, запрос A выполнит 3 теста, используя OR.
Запрос B выполнит 2 теста, используя AND.
Запрос B. быстрее.
Обычно запросы с использованием AND
выполняются быстрее, чем запросы с использованием OR
.
Кроме того, Query B выполняет меньше тестов, и поскольку он тестирует диапазон, ему легче исключать результаты, которые ему не нужны.