Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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
Google app engine GQL:myList.contains(myField)是否比30个单独的myField==myList(i)查询快?_Google App Engine_Google Cloud Datastore_Gql - Fatal编程技术网

Google app engine GQL:myList.contains(myField)是否比30个单独的myField==myList(i)查询快?

Google app engine GQL:myList.contains(myField)是否比30个单独的myField==myList(i)查询快?,google-app-engine,google-cloud-datastore,gql,Google App Engine,Google Cloud Datastore,Gql,我有一个包含100个长字符的列表,还有一个包含长字段的实体。我想找到字段值在列表中的所有实体 我在想,“太好了!我将只写其中:p1.contains(field)”,但AppEngine只会在不到31个元素上进行拆分(新巴斯金·罗宾斯的口号?)。所以,现在我想我必须把100人的名单分成30人的多个名单 但在这一点上,我对一个班轮射击的希望,我意识到我可以做类似的事情 for (Long number : list) GQL("select * from Kind where field

我有一个包含100个长字符的列表,还有一个包含长字段的实体。我想找到字段值在列表中的所有实体

我在想,“太好了!我将只写
其中:p1.contains(field)
”,但AppEngine只会在不到31个元素上进行拆分(新巴斯金·罗宾斯的口号?)。所以,现在我想我必须把100人的名单分成30人的多个名单

但在这一点上,我对一个班轮射击的希望,我意识到我可以做类似的事情

for (Long number : list)
    GQL("select * from Kind where field = " + number)

基本上是我自己分解成所有子查询。我的问题是。。。这是否等同于让appengine将我的30个查询列表拆分为30个单独的查询?或者,它们是否有一些后端魔法可以同时获取所有30个子查询?

该函数可能使用IN(arg1,arg2,…)运算符

:

单个查询包含!=或在操作员中,限制为30个子查询。


列表中的每个项目都算作子查询,因此使用该查询样式一次只能获取30个项目。

该函数可能使用in(arg1,arg2,…)运算符

:

单个查询包含!=或在操作员中,限制为30个子查询。


列表中的每个项目都算作子查询,因此使用该查询样式一次只能获取30个项目。

使用
SELECT*FROM YourKind,其中list\u属性中的值将导致运行多个子查询。正是这些子查询限制为30


使用
SELECT*fromYourKind,其中list_property=value
将使用为
list_属性构建的索引
,因此应使用列表属性可以包含的尽可能多的条目†


†我认为这将仅限于

使用
SELECT*FROM YourKind,其中list_属性中的值
将导致运行多个子查询。正是这些子查询限制为30


使用
SELECT*fromYourKind,其中list_property=value
将使用为
list_属性构建的索引
,因此应使用列表属性可以包含的尽可能多的条目†


†我认为这仅限于功能上与常规查询相同的子查询。目前,子查询是串行运行的,因此自己执行不会比让SDK为您执行慢。不过,在未来,子查询很可能会并行执行,这使得它们比自己执行效率更高。它还可以将“IN”等功能推送到后端,从而完全避免应用服务器中的问题


不过,您应该知道,任何需要您执行100个查询的操作都将非常非常缓慢。如果可以,您应该找到一种方法来解决这个问题,而不必进行成堆的查询和合并结果。

子查询在功能上与常规查询相同。目前,子查询是串行运行的,因此自己执行不会比让SDK为您执行慢。不过,在未来,子查询很可能会并行执行,这使得它们比自己执行效率更高。它还可以将“IN”等功能推送到后端,从而完全避免应用服务器中的问题


不过,您应该知道,任何需要您执行100个查询的操作都将非常非常缓慢。如果可以的话,您应该找到一种方法来解决这个问题,而不必进行成堆的查询和合并结果。

我的问题是自动生成的子查询是否比我自己生成的子查询运行得快。我的问题是自动生成的子查询是否比我自己生成的子查询运行得快。子查询是否我可以自己做30个比普通老查询快30个的子查询吗?我可以自己做30个比普通老查询快30个的子查询吗?谢谢尼克-你的建议对于appengine问题是必不可少的。其他人:投票给这个答案,看看动画。谢谢尼克-你的建议对于一些问题是必不可少的。其他人:投票给这个答案,看看动画。