我在我的代码中使用两个索引进行查询。这些索引是:
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的所有属性,并且它的顺序和位置从上到下是正确的?
答案 0 :(得分:1)
如果您根据它们运行查询,则需要两个索引。
根据您的使用情况,您可以仅使用索引1来检索所有匹配的实体,然后遍历结果并仅保留与“lead_value”过滤器匹配的结果。
如果满足以下两个条件,这种方法是个好主意:(1)在应用前3个过滤器后找到相对较少数量的实体,(2)您有大量实体开始使用或者您经常更新这些实体,因此删除额外的索引可以显着节省写入/数据存储成本。