MongoDBインデックス管理-インデックスの作成、表示、削除
4392 ワード
http://itbilu.com/database/mongo/E1tWQz4_e.html
インデックスは、クエリーの効率を向上させる最も効果的な手段です.インデックスは特殊なデータ構造で、インデックスは、特定のフィールドまたはフィールド値のセットなど、データの一部を遍歴しやすい形で格納します.インデックスは一定のルールで格納値をソートし、インデックスの格納場所はメモリにあり、インデックスからデータを取得するのが非常に速いです.インデックスがない場合、MongoDBは、特にデータ量が大きい場合に、セット内の各ドキュメントをスキャンする必要があります.インデックスの作成/再構築 インデックスを表示 削除インデックス 1.インデックスの作成/再構築
MongoDBの新しいインデックス作成には
1.1インデックス作成
構文構造
たとえば、セット
注:
1.2インデックスの再構築
たとえば、セット
2.索引の表示
MongoDBは、インデックス情報を表示する方法を提供します.
2.1コレクション内のインデックスの表示
たとえば、セット
2.2コレクション内のインデックスサイズの表示
たとえば、セット
2.3データベース内のすべてのインデックスを表示する
たとえば、現在のデータベースのすべてのインデックス:
3.索引の削除
不要なインデックスは削除できます.インデックスを削除すると、コレクション内のインデックスを削除できます.すべてのインデックスを削除できます.
3.1指定されたインデックスを削除する
たとえば、セット
3.3すべてのインデックスを削除する
たとえば、セット
インデックスは、クエリーの効率を向上させる最も効果的な手段です.インデックスは特殊なデータ構造で、インデックスは、特定のフィールドまたはフィールド値のセットなど、データの一部を遍歴しやすい形で格納します.インデックスは一定のルールで格納値をソートし、インデックスの格納場所はメモリにあり、インデックスからデータを取得するのが非常に速いです.インデックスがない場合、MongoDBは、特にデータ量が大きい場合に、セット内の各ドキュメントをスキャンする必要があります.
MongoDBの新しいインデックス作成には
ensureIndex()
メソッドが使用され、既存のインデックスに対してreIndex()
を使用して再構築できます.1.1インデックス作成
ensureIndex()
MongoDBインデックス作成にはensureIndex()
メソッドが使用されます.構文構造
db.COLLECTION_NAME.ensureIndex(keys[,options])
keys
、インデックスを作成するパラメータのリスト.例えば、{KEY:1}
、key
はフィールド名、1
は昇順ソートを表し、-1
を使用して降順することもできます.options
、オプションのパラメータは、インデックスの設定を確立することを示す.オプションの値は次のとおりです.background
、Booleanは、バックグラウンドでインデックスを作成し、インデックスを作成するときに他のデータベースのアクティビティをブロックしないようにします.デフォルトfalse.unique
、Boolean、一意のインデックスを作成します.デフォルトfalse.name
、String、インデックスの名前を指定します.指定されていない場合、MongoDBはインデックスフィールドの名前とソート順を直列に生成します.dropDups
,Boolean,一意のインデックスを作成すると,後続の同じインデックスの重複削除が発生した場合,最初のインデックスのみが保持される.sparse
,Booleanは、ドキュメントに存在しないフィールドデータにインデックスを有効にしません.デフォルトはfalseです.v
、index version、インデックスのバージョン番号.weights
、document、インデックスウェイト値、数値は1から999999の間であり、他のインデックスフィールドに対するインデックスのスコアウェイトを表す.たとえば、セット
sites
のインデックスを作成します.> db.sites.ensureIndex({name: 1, domain: -1})
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
注:
1.8
リリースより前にインデックスが作成されましたcreateIndex()
1.8
リリースを使用して削除されました1.2インデックスの再構築
reIndex()
db.COLLECTION_NAME.reIndex()
たとえば、セット
sites
のすべてのインデックスを再構築します.> db.sites.reIndex()
{
"nIndexesWas" : 2,
"nIndexes" : 2,
"indexes" : [
{
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "newDB.sites"
},
{
"key" : {
"name" : 1,
"domain" : -1
},
"name" : "name_1_domain_-1",
"ns" : "newDB.sites"
}
],
"ok" : 1
}
2.索引の表示
MongoDBは、インデックス情報を表示する方法を提供します.
getIndexes()
の方法は、セットのすべてのインデックスを表示し、totalIndexSize()
の合計サイズを表示し、db.system.indexes.find()
のデータベース内のすべてのインデックス情報を表示します.2.1コレクション内のインデックスの表示
getIndexes()
db.COLLECTION_NAME.getIndexes()
たとえば、セット
sites
のインデックスを表示します.>db.sites.getIndexes()
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "newDB.sites"
},
{
"v" : 1,
"key" : {
"name" : 1,
"domain" : -1
},
"name" : "name_1_domain_-1",
"ns" : "newDB.sites"
}
]
2.2コレクション内のインデックスサイズの表示
totalIndexSize()
db.COLLECTION_NAME.totalIndexSize()
たとえば、セット
sites
のインデックス・サイズを表示します.> db.sites.totalIndexSize()
16352
2.3データベース内のすべてのインデックスを表示する
db.system.indexes.find()
db.system.indexes.find()
たとえば、現在のデータベースのすべてのインデックス:
> db.system.indexes.find()
3.索引の削除
不要なインデックスは削除できます.インデックスを削除すると、コレクション内のインデックスを削除できます.すべてのインデックスを削除できます.
3.1指定されたインデックスを削除する
dropIndex()
db.COLLECTION_NAME.dropIndex("INDEX-NAME")
たとえば、セット
sites
の「name_1_domain_-1」という名前のインデックスを削除します.> db.sites.dropIndex("name_1_domain_-1")
{ "nIndexesWas" : 2, "ok" : 1 }
3.3すべてのインデックスを削除する
dropIndexes()
db.COLLECTION_NAME.dropIndexes()
たとえば、セット
sites
のすべてのインデックスを削除します.> db.sites.dropIndexes()
{
"nIndexesWas" : 1,
"msg" : "non-_id indexes dropped for collection",
"ok" : 1
}