2016-05-18 4 views
0

私はproduct_catalogコレクションを持っており、膨大な数のドキュメントが含まれています。私たちはパフォーマンスを改善するためにmongodbで作成する必要がありますか?

{ 
    "_id": "573c1540c4cebf791315aa0a", 
    "images": [], 
    "categories": [ 
    "shirts", 
    "wedding", 
    "suits" 
    ], 
    "publish": "1", 
    "inventory_management": "none", 
    "options": [], 
    "SEO": { 
    "title": "dummy", 
    "description": "dfasdfasd", 
    "keywords": "dummy" 
    }, 
    "attributes": [], 
    "features": [], 
    "files": [], 
    "seller": "seller_one", 
    "approve": "approved", 
    "description": "<span style=\"color: rgb(57, 57, 57); font-family: 'Open Sans'; font-size: 14px; line-height: 21px; text-align: right;\">Description here.</span>", 
    "name": "dummy", 
    "alias": "dummy", 
    "price": 500, 
    "compare_price": 550, 
    "collections": [ 
    "collection-2", 
    "collection-3" 
    ], 
    "brand": "test_brand", 
    "sku": "rtrtrt", 
    "barcode": "12121", 
    "weight": "12", 
    "sort_order": 0, 
    "available": 1, 
    "uniquesku": [ 
    "rtrtrt" 
    ] 
} 

そして、我々は、クエリおよびソートオプションの後にドキュメントを取得されています

文書は、(文書構造)のようなものです。

db.collection('product_catalog').find(query).sort(sort_options).toArray(function(err, records){ 

// records 

}) 
sort_options : { sort_order: 1, _id: -1 } 
Query is like : 
    1. { publish: '1'} 
    2. { publish: '1', alias: 'alias_value' } 
    3. { publish: '1', approve: 'approve_value' } 
    4. { categories: 'category_value', publish: '1' } 
    5. { collections: 'collection_value', publish: '1' } 

読み取り操作のパフォーマンスを向上させるためにはどのようなインデックスを作成する必要がありますか?

+0

公開されるオプションは何ですか? 0と1?どの割合の文書が「公開された:1」であるか。それが99%なら、そのインデックスは非常に有用ではありません。 –

+0

発行オプションは0と1です。文書の80%が公開されています(値: "1")。そして、すべての操作が高速になるようにインデックスを作成したいと思います。 – rajeshpanwar

+0

https://docs.mongodb.com/manual/core/index-intersection/#index-intersection-and-sort – rajeshpanwar

答えて

1

MongoDBでは、インデックスはアプリケーションの使用例に従うことをお勧めします。

{ alias:1, publish: 1} 
{ approve:1, publish:1} 
{ categories: 1, publish: 1 } 
{ collections: 1, publish: 1 } 
{ publish: 1 } 

私は最初はより細かくなり、それらは、より効率的であるため、第2のフィールドとして公開入れている注:あなたはすでにトップのクエリを特定したので、あなただけのそれぞれのインデックスを追加する必要があります。

+0

Sirはどのような並べ替えオプションですか? sort_options(sort_order)にインデックスがあるはずですか? – rajeshpanwar

+1

ソートするユースケースについては、最後にsort_orderフィールドを追加してください。 '{approve:1、publish:1、sort_order:1}'である。日付順にフォールバックする前にsort_orderと_idでソートしていますか? –

+0

はい、私はsort_orderと_idでソートしています – rajeshpanwar

関連する問題