簡體   English   中英

如何使用復合索引優化大查詢?

[英]How to optimize big query with compond index?

我試圖通過傳遞最佳復合索引來達到查詢的最佳執行時間。 所以查詢是:

db.BMW_offers
   .find({"model":"X5", "predict_value":{"$gt":700,"$lte":1300}, "owners_number":{"$lte":2}, "status":{"$ne":"ERROR"}, "year":{"$gt":2010 }})
   .sort({"offer_creation_date":-1, "predict_value":1, "mileage": 1})

遵循 Mongo 中的 ESR 規則,我創建了以下復合索引:

db[col_name].create_index([
            ('model', 1),                # Equality first -> (model: "X5")
            ('offer_creation_date', -1), # Sort second -> (offer_creation_date: -1)
            ('predict_value', 1),        # Sort second -> (predict_value: 1)
            ('mileage', 1),              # Sort second -> (mileage: 1)
            ('predict_value', -1),       # Range third -> (predict_value: {$gt: 700})
            ('predict_value', 1),        # Range third -> (predict_value: {$lte: 1300})
            ('owners_number', 1),        # Range third -> (owners_number: {$lte: 2})
            ('status', 1),               # Range third -> (status: {$ne: "ERROR"})
            ('year', -1)                 # Range third -> (year: {$gt: 2010})
        ], name='actual_search', default_language='english')

它是此查詢的最佳索引嗎?

是的,您涵蓋了過濾階段的所有字段,並且還涵蓋了排序階段的正確方向的字段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM