我正在开发一个Google App Engine Java应用程序,用户可以根据搜索条件从数据库中搜索业务对象。 搜索结果(记录列表)不应包括过去搜索中的任何记录(特定数量的记录,比如100)。因此,我将过去的结果存储在用户配置文件中。 有效实现此逻辑的任何建议(不使用多个集合迭代)。我正在使用JDO,并且在查询中使用“NOT IN”条件存在限制。
答案 0 :(得分:1)
这是一个解决方案,假设您的目标是获得200个已经不在历史记录中的密钥。 我将尝试估算用作“效率”代理的操作数量,因为这是我们在new pricing model中收费的方式
如果数据存储区支持本机“NOT IN”运算符,那么我们可以从第2步中删除100个小操作,并跳过第4步。这里最大的成本将是获取实际的200个实体,这必须发生在或没有NOT IN运算符。最终,与本机NOT IN运算符相比,这种方法效率不高。
进一步优化:
如果您不需要同时显示200个密钥,那么您可以使用游标一次只获得N个结果。
我只是猜测我什么时候建议您先获得300个密钥。您可能需要或多或少。第二次尝试也可能少于100。