我想在AppEngine上使用投影查詢和Zigzag合併。看來,這需要投影屬性包含在鋸齒形合併查詢所使用的每個索引中。在我的用例中,這會導致實體更新成本太高。Zigzag合併投影查詢
爲了說明,下面是使用Java低級別數據存儲區API以及使用該索引指數(E,P1,P3)和索引(E,P2,P3)一個簡單的例子;這可以工作,但重複實體E在這兩個索引中的p3屬性。
// Create a sample entity with three (indexed) properties.
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
Entity e = new Entity("E");
e.setProperty("p1", 1);
e.setProperty("p2", 1);
e.setProperty("p3", 1);
datastore.put(e);
// Query for the above entity with a projection on property p3.
Query q = new Query("E");
Filter filter1 = new FilterPredicate("p1", FilterOperator.EQUAL, 1);
Filter filter2 = new FilterPredicate("p2", FilterOperator.EQUAL, 1);
q.setFilter(CompositeFilterOperator.and(filter1, filter2));
q.addProjection(new PropertyProjection("p3", Integer.class));
PreparedQuery pq = datastore.prepare(q);
pq.asList(FetchOptions.Builder.withDefaults());
我想刪除的複合指標之一,說指數(E,P2,P3),只是依靠房地產P2默認的指數,從而降低成本更新。但是這樣做會在運行時導致DatastoreNeedIndexException。
請注意,如果我保留上述兩個索引,但僅向其中的一個添加第四個屬性,並在投影中包含此第四個屬性,則會出現類似問題。因此,使用默認索引似乎不成問題。
所以我的問題:是否有任何方式做鋸齒形合併投影查詢沒有重複索引所有投影屬性?如果不是,我想了解潛在的技術原因。
任何指針非常讚賞。