如何使用复合索引优化 bigquery?

Posted

技术标签:

【中文标题】如何使用复合索引优化 bigquery?【英文标题】:How to optimize big query with compond index? 【发布时间】:2021-02-27 13:55:24 【问题描述】:

我试图通过传递最佳复合索引来达到查询的最佳执行时间。所以查询是:

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')

它是这个查询的最佳索引吗?

【问题讨论】:

【参考方案1】:

是的,您涵盖了过滤阶段的所有字段,还涵盖了排序阶段的字段,方向正确。

【讨论】:

以上是关于如何使用复合索引优化 bigquery?的主要内容,如果未能解决你的问题,请参考以下文章

使用 fts + 复合索引优化查询

#yyds干货盘点#MySQL索引优化系列:索引全用及最左法则

使用复合索引优化MySQL查询

MySQL索引优化系列:索引全用及最左法则

mysql优化常用的方法

索引优化