インデックスにb-treeを使いたいのですが、ORクエリの解決策が思いつきません。
OR クエリの場合、 select * from table where id between 1 and 5 OR id between 10 and 15; のようなものを意味します。
B ツリーで id をキーとして使用する場合、B ツリーで上記のようなクエリを実行するにはどうすればよいですか?
b ツリーを検索するときは、6 より小さいキーと 6 より大きいキーが異なるサブツリーにあると仮定します。検索パスが 6 より小さいキーを含むサブツリーを通過する場合よりも、 1 から 5 の間は取得できますが、10 から 15 の間の id はどうでしょうか。
b+tree を使用する必要がありますか? ID 1 を指すキーが見つかったら、ID 15 を指すキーが見つかるまで、リーフ ノードを 1 つずつスキャンし続けますか? この種のクエリの悪い解決策ですか: select * from table where id between 1 and 5 OR id between 10000000 and 10000005 ???
または、他の解決策はありますか?
どうもありがとうございました!