我们可以优化谷歌应用引擎索引,如果一个索引集是其他的子集

时间:2015-12-07 06:18:52

标签: google-app-engine

我在我的代码中使用两个索引进行查询。这些索引是:

Index1:

<datastore-index kind="Contact" ancestor="false" source="auto">
    <property name="type" direction="asc"/>
    <property name="star_value" direction="asc"/>
    <property name="close_date" direction="asc"/>
</datastore-index>

指数2:

<datastore-index kind="Contact" ancestor="false" source="auto">
    <property name="type" direction="asc"/>
    <property name="star_value" direction="asc"/>
    <property name="close_date" direction="asc"/>
    <property name="lead_value" direction="asc"/>
</datastore-index>

Q值。谷歌应用程序引擎说我们可以优化索引来减少它。我们只使用index2,因为它具有index1的所有属性,并且它的顺序和位置从上到下是正确的?

1 个答案:

答案 0 :(得分:1)

如果您根据它们运行查询,则需要两个索引。

根据您的使用情况,您可以仅使用索引1来检索所有匹配的实体,然后遍历结果并仅保留与“lead_value”过滤器匹配的结果。

如果满足以下两个条件,这种方法是个好主意:(1)在应用前3个过滤器后找到相对较少数量的实体,(2)您有大量实体开始使用或者您经常更新这些实体,因此删除额外的索引可以显着节省写入/数据存储成本。