インデックスが作成されてもよろしいですか? getIndexes()
の出力を提供できますか あなたのコレクションの
例:db.my_collection.getIndexes()
とクエリの説明
db.my_collection.find({created_at_year: 2014, created_at_month: 1, created_at_day: 28 }).explain()
PS:もちろん、必要以上に保存しているという事実について、@Aestheteに同意する必要があります...
2014年1月29日更新
完全!ご覧のとおり、すべてを含む1つの複合インデックスを作成できる場合、4つの異なるインデックスがあります。
定義
db.my_collection.ensureIndex({created_at_year: 1, created_at_month: 1, created_at_day: 1, created_at_hour: 1 })
次のクエリを実行できる、より正確なインデックスが提供されます。
year
year
およびmonth
year
およびmonth
およびday
year
およびmonth
およびday
およびhour
これにより、インデックスデータですべての基準が満たされるため、クエリ(4つのキーを使用)がはるかに高速になります!
ensureIndex()
のキーの順序に注意してください 重要なのは、その順序が実際に上記のクエリのリストを定義することです!
また、正しいプロジェクションを指定する場合よりも、これら4つのフィールドだけが必要な場合は、
eg:
db.my_collection.find({created_at_year: 2014, created_at_month: 1, created_at_day: 28}, { created_at_year: 1, created_at_month: 1, created_at_day: 1 })
その場合、インデックスのみが使用されます。これが最大のパフォーマンスです!