1

複数の列がある場合、インデックス内の列の並べ替え順序がどのように違いを生むかは理解できますが、インデックス内の列が 1 つしかない場合は、降順と同じくらい昇順になりますか?

インデックスが間違った方法でソートされた場合、最初ではなく最後から開始できるようです。

足りないものはありますか?

4

1 に答える 1

1

インデックス内の列の並べ替え順序に違いはありません。ただし、微妙な違いがある場合もあります。

異なるデータベースにインデックスを実装するには、さまざまな方法があります。ただし、それらは通常、順序付けられた値と値が発生するレコードの「アドレス」を含む葉を持つツリーベースのデータ構造です。

子の順序を除いて同一の 2 つのインデックスは、同じパフォーマンスになります。等値比較の場合、プロセスはツリーをたどって値を見つけます。インデックスが同一であるため、2 つのバージョンのパスは同じです。

非等価 ("<" および ">") 比較は、基本的に同じように機能します。最初にしきい値を見つけてから、そこから前方または後方にインデックスをスキャンします。

問題は、昇順と降順の値に対して「同じように」2 つのインデックスが作成されるかどうかです。ここが複雑なところです。すべての実用的な目的のために、インデックスはかなり同等になると思います。ただし、たとえば、分割が同一ではないb ツリーの場合もあります。これは、ツリーで発生する非対称性が原因で発生します。

たとえば、B ツリーを説明しているウィキペディアのページで、Knuth の例まで下にスクロールします。「4」を入れた段に非対称があります。ノードは (1)、(2)、(3,4) です。逆の並べ替え順序では、ノードは (4)、(3)、(1,2) になります。

最終的に、インデックスはおそらく機能的に同等になります。ただし、一部の葉の深さに影響を与える非対称性が発生する可能性があります。

ところで、この答えを考え始めたとき、インデックスは同じだろうというのが正解だと思いました。よくよく考えてみると、そうではないようです。

于 2013-01-29T20:20:14.960 に答える