Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GAE数据存储-所有排序操作的单一复合索引_Java_Google App Engine_Objectify - Fatal编程技术网

Java GAE数据存储-所有排序操作的单一复合索引

Java GAE数据存储-所有排序操作的单一复合索引,java,google-app-engine,objectify,Java,Google App Engine,Objectify,我正在使用GAE(java)和objectify查询数据存储。我有一个查询,其中实体将根据三个不同的属性进行过滤。因为它们是索引的,所以它工作得很好。但是我需要根据另一个属性对结果进行排序。所以我添加了这样的综合指数 实体种类-> --FiterProperty 1 asc --fiterProperty2 asc --FiterProperty 3 asc --分类属性描述 它也很好用。但我有六个以上的其他属性可以对查询进行排序。(一次一个排序用于查询,而不是一次全部六个排序)。因此,问题是:

我正在使用GAE(java)和objectify查询数据存储。我有一个查询,其中实体将根据三个不同的属性进行过滤。因为它们是索引的,所以它工作得很好。但是我需要根据另一个属性对结果进行排序。所以我添加了这样的综合指数

实体种类->

--FiterProperty 1 asc

--fiterProperty2 asc

--FiterProperty 3 asc

--分类属性描述

它也很好用。但我有六个以上的其他属性可以对查询进行排序。(一次一个排序用于查询,而不是一次全部六个排序)。因此,问题是:

  • 我可以把综合指数的六种组合加起来。这会增加索引计数吗(从我到目前为止读到的200是最大索引的限制)

  • 我可以像这样在一个复合索引中添加所有排序选项吗

  • 实体种类->

    --FiterProperty 1 asc

    --fiterProperty2 asc

    --FiterProperty 3 asc

    --分类属性1描述

    --分类属性2描述

    --分类属性3描述

    --分类属性4描述

    --分类属性5描述

    --分类属性6描述

    这样行吗?我希望减少写入计数和数据存储的大小

    我需要再次重新保存所有实体,以测试查询是否有效。所以请帮我避免一些开销

    到目前为止,我在阅读其他stackoverflow帖子时得到的信息:
    查询所有实体并在代码中对其排序。这对我不起作用,因为我有超过10000个实体用于单个种类。我认为这也不是一个可行的解决方案。

    默认方法是在devserver上运行所有必需的查询,然后查看自动生成的索引文件包含什么。关于1)每个索引都会增加索引计数,因此是的。2) 这应该行得通。一般来说:这种复杂的综合指数通常来源于过于复杂或未优化的实体模型。根据您需要执行此类查询的频率,您可能希望在内存中执行一些筛选/排序,并将结果缓存在结果表中以供以后使用。谢谢您的帮助。