3

複合インデックスについては、順序付けが重要であると言う人もいました。順序は関係ないと言う人もいます。

どちらが正しいですか?なぜ?

つまり、電話を調べると、電話がaからzにソートされているのか、zからaにソートされているのかがまったくわかりません。複合インデックスの場合、それはどのように変化しますか?

注:私が言いたいのは、降順または昇順の順序付けです。列の順序が重要であることは十分承知しています。

高得点メンバーによる回答が 2 つあることに注意してください。複合インデックスでも、降順または昇順は関係ないと言う人もいます。別の人は、それが重要だと言いました。はい、ここで論争があります。私(または私たち)はどこでもっと掘り下げることができますか。

4

4 に答える 4

6

一般的な場合の順序は重要です。質問は次のとおりです。あなたはどの順序を指していて、それはあなたの場合に重要ですか?

  1. 降順と昇順。実際に結果を特別な順序でソートしたいという非常に特別な場合にのみ重要です。結果を次のように並べたいとします。

    a asc、b desc、c asc

しかし、あなたのインデックスは

a asc, b asc, c asc

データベースは追加のソートを行う必要があります。ある順序に従って最初の n 要素にアクセスする場合も同様です。これは、単一列の方向が変わると全体の順序がまったく異なる結果になるのに対し、単一列インデックス内の単一列の順序は単に順序が逆になるため、複合インデックスではより重要です。

  1. 列の順序

    a、b、c

b, a, c

すべての列をフィルター処理しても大きな違いはありませんが、a のみをフィルター処理すると、最初のインデックスは 2 番目のインデックスよりも役に立ちます。

プログラミング言語で問題を解決するための 2 つのオプションがあり、誰かが違いを生まないと言ったときはいつでも、2 つのオプションが存在する理由を尋ねてください。「誰か」がそれに答えられないなら、私はこの 2 つが同等であるという彼のアドバイスを信用しません。

于 2012-09-09T09:12:08.230 に答える
3

混乱は、「順序付け」の 2 つの異なる意味に基づいていると思います。

  1. インデックス付きアイテムが昇順または降順のどちらでソートされているか。
  2. 複合インデックスで、項目をソートするために最初に使用される列はどれですか

あなたが言ったように、最初のものは問題ではありません。ただし、2番目は重要です。

于 2012-09-09T09:02:22.940 に答える
1

名前と姓の 2 つのフィールドがあるとします。(name, surname) の複合索引は、(surname, name) の複合索引とは異なります。検索は最初の列から開始され、次に 2 番目の列から開始されます。そのため、姓を使用して検索する場合、(name, surname) の複合インデックスは (surname, name) の複合インデックスよりも遅くなります。

于 2012-09-09T09:01:44.483 に答える
0

たとえば、コレクション レコードのフィールド a に昇順のインデックスを作成します。

db.records.createIndex( { a: 1 } )

このインデックスは、インデックスを逆の順序でトラバースすることにより、昇順ソートaと降順ソートをサポートできます。a

db.records.find().sort( { a: 1 } )
db.records.find().sort( { a: -1 } )

検索の結果はデフォルトで次のようにソートされるため、電話については正しい$naturalhttps://docs.mongodb.com/manual/reference/method/cursor.sort/#return-in-natural-order

複合インデックスの場合、順序が重要です。たとえば、インデックス キー パターンはon での並べ替えをサポート{ a: 1, b: 1 } でき{ a: 1, b: 1 }ますが、 onではサポートできません{ b: 1, a: 1 }

並べ替えに複合インデックスを使用するクエリの場合、cursor.sort() ドキュメント内のすべてのキーに対して指定された並べ替え方向は、インデックス キー パターンに一致するか、インデックス キー パターンの逆に一致する必要があります。たとえば、インデックス キー パターンはandでの並べ替えをサポート{ a: 1, b: -1 } できますが、orでの並べ替えはサポートできません{ a: 1, b: -1 }{ a: -1, b: 1 }{ a: -1, b: -1 }{a: 1, b: 1}

ソース: https://docs.mongodb.com/manual/tutorial/sort-results-with-indexes/

于 2019-03-26T11:14:45.523 に答える