Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.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 GQL查询是否存在:Get vs.Key Query vs.Entity Query_Java_Google Cloud Datastore_Gql - Fatal编程技术网

Java GQL查询是否存在:Get vs.Key Query vs.Entity Query

Java GQL查询是否存在:Get vs.Key Query vs.Entity Query,java,google-cloud-datastore,gql,Java,Google Cloud Datastore,Gql,虽然谷歌云客户端库有很多内置功能,但我还没有找到任何可用于根据实体id查询实体是否存在的功能。据我所知,进行关键查询要比这样的实体查询高效得多 SELECT __key__ FROM User WHERE __key__ = Key(User, 1) 如果可能,在Java应用程序中使用get(Key)功能会更好 Datastore datastore = DatastoreOptions.getDefaultInstance().getService(); KeyFactory keyFact

虽然谷歌云客户端库有很多内置功能,但我还没有找到任何可用于根据实体id查询实体是否存在的功能。据我所知,进行关键查询要比这样的实体查询高效得多

SELECT __key__ FROM User WHERE __key__ = Key(User, 1)
如果可能,在Java应用程序中使用
get(Key)
功能会更好

Datastore datastore = DatastoreOptions.getDefaultInstance().getService();
KeyFactory keyFactory = datastore.newKeyFactory().setKind(User);
Key key = keyFactory.newKey(1);
Entity entity = datastore.get(key);
如果我有一个实例,其中我的实体也有祖先,那么在查询仅具有父ID的祖先的存在时,这三个实例中哪一个更有效? 我假设实体查询(
SELECT*From Parent,其中_u-key=key(Parent,1)
)总是比键查询慢,但是与get相比又如何呢

当祖先路径被链接得更长时,情况会怎样? 然后,关键查询可能会变成以下内容:

SELECT __key__ FROM Grandchild WHERE __key__ = Key(Parent, 1, Child, 1, Grandchild, 1)

仅键查询速度更快,因为实体数据不必传输回客户端。假设您有一个具有N个属性的实体,并且这些属性(名称和值)的大小为50KB,如果您执行仅键查询,则通过网络传输的数据将节省50KB

无论您使用仅键查询、基于键的实体查询还是Get(键)方法,从数据存储的角度来看实体的实际查找都是相同的,因为数据存储只是基于提供的键查找实体


总而言之,若您只需要知道具有给定键的实体是否存在,那个么只有键查询将是您的最佳选择

仅键查询速度更快,因为实体数据不必传输回客户端。假设您有一个具有N个属性的实体,并且这些属性(名称和值)的大小为50KB,如果您执行仅键查询,则通过网络传输的数据将节省50KB

无论您使用仅键查询、基于键的实体查询还是Get(键)方法,从数据存储的角度来看实体的实际查找都是相同的,因为数据存储只是基于提供的键查找实体


总而言之,若您只需要知道具有给定键的实体是否存在,那个么只有键查询将是您的最佳选择

如果我分别拥有种类和标识符呢?使用get()方法更好,还是构造键文本/使用参数绑定更好?如果分别使用种类和标识符会怎么样?使用get()方法更好还是构造键文字/使用参数绑定更好?