我有一个非常简单的数据库查询:
Query q = new Query("person");
q.addFilter("name", Query.FilterOperator.EQUAL, req.getParameter("n"));
PreparedQuery pq = datastore.prepare(q);
for (Entity result : pq.asList(FetchOptions.Builder.withDefaults())) {
// ...
}
因此,只需搜索给定名称的所有条目即可。该名称不是唯一的,包含最多16个字符。据我所知,短字符串的索引(<500个字符)是自动生成的。
表中有大约100000个条目。数据库请求需要8秒以上才能获取所有(大约10个)实体。
现在的问题是如何加快速度?
答案 0 :(得分:5)
dev appserver的性能并不代表生产性能。特别是,dev appserver不使用索引。 完全。每个查询只扫描该类型的每个实体。
所以不要将那么多数据插入到dev appserver中。使用它来测试基本功能,然后部署,并将1000000个实体插入到生产应用引擎应用服务器中,而不是实际生成和使用索引。