2016-05-18 2 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 } 

Обратите внимание, что я положил опубликовать в качестве второго поля, так как первый будет более детальным и тем более эффективным.

+0

Сэр, что относительно опции сортировки?. должен ли быть индекс на sort_options (sort_order)? – rajeshpanwar

+1

Для любого из вариантов использования, которые вы будете сортировать, добавьте поле sort_order в конец, например. '{approve: 1, publish: 1, sort_order: 1}'. Вы сортируете по sort_order AND _id, прежде чем хотите отменить дату? –

+0

Да, сэр, я сортирую sort_order и _id – rajeshpanwar

Смежные вопросы