似乎在开发App Engine服务器datastore-indexes.xml不起作用。这是真的吗? 另外,我使用autoGenerate =“true”创建了一个datastore-indexes.xml文件,但它没有在datastore-indexes-auto.xml中生成任何索引。为什么呢?
<?xml version="1.0" encoding="utf-8"?>
<datastore-indexes autoGenerate="true">
<datastore-index kind="UserData" ancestor="false">
<property name="email" direction="asc" />
<property name="email" direction="desc" />
<property name="lastName" direction="asc" />
<property name="lastName" direction="desc" />
</datastore-index>
</datastore-indexes>
已更新
有我的实体:
@Entity
@Index
public class UserData implements PersistableObject {
@Id
Long id;
String email;
String firstName;
String lastName;
String middleName;
String passwordHash;
UserType userType;
}
有我的道:
public class UserDataDao {
public List<UserData> getUsers(int startRow, int limit, String columnName, boolean ascending) {
Query<UserData> query = ofy().load().type(UserData.class)
.offset(startRow).limit(limit);
if (columnName != null) {
query.order((ascending ? "" : "-") + columnName);
}
return query.list();
}
public int usersCount() {
return ofy().load().type(UserData.class).count();
}
public UserData find(Class<? extends UserData> aClass, Long userId) {
return ofy().load().type(aClass).id(userId).now();
}
}
正在执行查询,但即使我只保留datastore-indexs标记,也没有创建索引。
答案 0 :(得分:0)
未创建其他索引,因为您只查询单个属性。 @Index属性时会自动创建这些索引。
涉及多个属性(过滤和排序)的复杂查询将需要其他索引。
提示:为实体上的所有字段编制索引真的是一个坏主意,这将添加存储每个实体所需的几个写入,这将提高您的应用成本FAST,仅考虑索引您计划过滤的字段,排序