【问题标题】:Do composite indexes improve performance?复合索引会提高性能吗?
【发布时间】:2020-01-08 01:10:08
【问题描述】:

假设我有一个复合索引,例如:

- kind: Order
  properties:
  - name: active
  - name: email
  - name: shipped

我有一个使用 Order like 的查询

Order.all().filter('active', True).filter('email', email).filter('shipped', True)

从查看文档看来,索引是不必要的,可以安全地删除,因为这些属性上的简单索引可以完成查询。

这个复合查询有什么好处吗?它是提高查找速度还是减少数据存储读取次数?

【问题讨论】:

    标签: python google-app-engine google-cloud-datastore


    【解决方案1】:

    我的实验证据表明是的,这样的综合指数可以显着提高速度。

    如果没有复合索引,数据存储将需要进行 3 个中间查询(每个过滤条件一个),然后合并结果。如果这些中间结果集很大,可能会导致性能显着下降。

    我在这里描述我的经历: Firestore in Datastore mode: index hotspots for enum property values vs. just poor indices?

    【讨论】:

      【解决方案2】:

      是的,当然,上述索引提高了性能。 正确的语法是:Order.all().filter('active =', True).filter('email =', email).filter('shipped =', True)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-25
        • 1970-01-01
        • 1970-01-01
        • 2019-11-11
        • 2015-04-28
        • 2013-04-12
        • 2020-03-05
        • 2014-01-23
        相关资源
        最近更新 更多