使用ORDER BY时“找不到匹配的索引”

时间:2017-12-05 23:02:03

标签: google-cloud-datastore google-cloud-platform

我已经完成了所有问题并创建了大量独立完成的索引,但是第二次尝试添加ORDER BY时,我找到了“找不到匹配的索引”。错误

这些是我正在使用的索引

indexes:
- kind: gallery-public
  properties:
  - name: public
  - name: flavor
  - name: created
    direction : desc
- kind: get-selfies
  properties:
  - name: flavor
  - name: public
  - name: created
    direction: desc
- kind: get-selfies
  properties:
  - name: flavor
  - name: created
    direction: asc
- kind: get-all
  properties:
  - name: public
  - name: created
    direction: desc
- kind: get-all-old
  properties:
  - name: public
  - name: created
    direction: asc
- kind: get-all-two
  properties:
  - name: flavor
  - name: created
    direction: desc

每个查询都有效

SELECT * FROM upload WHERE flavor="whatever" AND public=true

直到我添加了一个ORDER BY,在这种情况下没有任何效果。如:

SELECT * FROM upload WHERE public=true ORDER BY created DESC

我已经创建了所有这些索引,明确定义了描述,将订单字段留到了最后,我仍然无法使其工作。我错过了什么?

2 个答案:

答案 0 :(得分:2)

您需要为upload种类添加索引:

- kind: upload
  properties:
  - name: public
  - name: created
    direction: desc

FYI没有ORDER BY的查询成功,因为它可以使用public属性ORDER BY。通过添加public,您需要在created14.05.2017 15:32属性上都有一个综合索引。

答案 1 :(得分:0)

该查询返回的属性多于publiccreatedflavor

相反:

SELECT public,created,flavor FROM upload WHERE public=true ORDER BY created DESC

如果情况并非如此,请提供SELECT *的样本记录。

查询返回的任何属性(字段)也必须是自定义索引的一部分。