「foo」と「bar」という 2 つのフィールドを持つデータベース テーブルがあるとします。どちらも一意ではありませんが、それぞれにインデックスが付けられています。ただし、一緒に索引付けされるのではなく、それぞれに別個の索引があります。
SELECT * FROM sometable WHERE foo='hello' AND bar='world';
ここで、foo が「hello」である膨大な数の行と、bar が「world」である少数の行の My tableなどのクエリを実行するとします。
したがって、データベース サーバーが内部で行う最も効率的な方法は、bar インデックスを使用して、bar が「world」であるすべてのフィールドを検索し、foo が「hello」である行のみを返すことです。ここでO(n)
、n はバーが「世界」である行の数です。
ただし、fo インデックスを使用して結果を検索するという逆のプロセスが発生する可能性があると思います。ここで、m は fooがO(m)
「hello」である行の数です。
では、オラクルはここで効率的に検索できるほど賢いのでしょうか? 他のデータベースはどうですか?または、クエリで適切な順序で検索するように指示できる方法はありますか? おそらく、句bar='world'
の最初に置くことによって?WHERE