0

アプリケーションに Mongodb を使用しています。コレクションのインデックスの作成に関するクエリを取得しました。

まず第一に、以下はDBで検索を行い、データを返す私のクエリです

db.mycollection.find({ symbol: "UGHNG", date: "2013-11-08", mainsymbol: "HIJ" }).sort( { "price": 1,"surv": 1} ).pretty()

上記のクエリからわかるように、price と surv の 2 つのフィールドは、並べ替えの目的でのみ使用されます。

上記のインデックスを作成するための最良の方法は何ですか

上記のクエリのすべてのフィールドを含む複合インデックスを作成します。

db.mycollection.ensureIndex({"symbol":1,"date":1,"mainsymbol":1,"price":1,"surv":1},{"unique" : false})

また

以下に示すように、2 つの単一インデックスと 1 つの複合インデックスを作成して、上記のクエリを実行します。

db.mycollection.ensureIndex({"price" : 1}, {"unique" : false})
db.mycollection.ensureIndex({"surv" : 1}, {"unique" : true})
db.mycollection.ensureIndex({"symbol":1,"date":1,"mainsymbol":1},{"unique" : false})

これをすべての側面(RAMサイズ、クエリパフォーマンス)で処理するという点で最良のアプローチは何かとして、あなたの見解を共有してください

4

2 に答える 2

0

最善の方法は、.explain() を使用することです。

これにより、インデックスの各バージョンでどれだけの作業が行われたかがわかります

Explain メソッドを調べて、その出力を解釈する方法を学ぶことは、本当に価値のあることです。

于 2013-10-29T17:44:49.357 に答える