![](/img/trans.png)
[英]Is there any point using MySQL “LIMIT 1” when querying on indexed/unique field?
[英]Querying Datastore using some of the indexed properties
我正在尝试 Cloud Datastore 的索引,但我无法确定解决查询所需的配置。
我创建了一些相同类型的实体(名为“对象”),它们都具有 5 个名称相同的属性(property_0、property_1、...、property_4)。 然后,我为该类型创建了一个复合索引,索引所有 5 个属性,并将 property_4 设置在最后一个位置,因为我想对其应用不等式过滤器。
索引的定义是:
indexes:
- kind: object
ancestor: no
properties:
- name: property_0
direction: asc
- name: property_1
direction: asc
- name: property_2
direction: asc
- name: property_3
direction: asc
- name: property_4
direction: asc
我试图解决的查询将始终在 property_4 上应用不等式过滤器,并且可能在其他一些属性上存在过滤器。 一些例子:
唯一有效的查询是,如果我过滤索引中的每个属性,它们的 rest 会显示错误消息“您的数据存储没有此查询所需的复合索引(开发人员提供)”。
不应该所有查询都由创建的索引解决吗? 或者我是否需要为我想要应用的每个过滤器组合创建一个索引? (即过滤property_4和property_0的一个索引;property_4和property_1的另一个索引;property_4、property_2和property_3的另一个索引;...)
您是对的,您需要为要应用的过滤器的每个组合创建索引。
您可以通过以下方式在index.yaml文件中指定单独查询的索引:
indexes:
- kind: object
properties:
- name: property_0
- name: property_1
- name: property_2
- name: property_3
- name: property_4
- kind: object
properties:
- name: property_3
- name: property_4
- name: property_0
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.