どちらのクエリもインデックスを使用します。
クエリAは次のように変換されます:
select * from person where age = 1 or age = 2 or age 3;
クエリBは次のように翻訳されます
select * from person where age >= 1 and age <= 3;
したがって、クエリAはORを使用して3つのテストを実行します。
クエリBはANDを使用して2つのテストを実行します。
クエリBの方が高速です。
一般に、AND
を使用したクエリ OR
を使用したクエリよりも高速です 。
また、クエリBは実行するテストが少なく、範囲をテストしているため、不要な結果をより簡単に除外できます。