1

我正在使用带有 (C#) .NET 代码的 Google Cloud 数据存储,我在数据存储中有名为 Audit 的表,其中包含以下列

ID/Name (long), ID (long), ActionType (String), GroupType (String), DateTime (TimeStamp), CompanyID (long), UserID (long), ObjectID (long), IsDeleted (boolean)

仅供参考,ID/Name 和 ID 都包含相同的信息

我想像这样运行 GQL 查询

SELECT * FROM Audit WHERE GroupType='XYZ' AND ActionType='CREATED' AND CompanyID=152738292 and IsDeleted=false 按 ID 排序

我似乎没有得到正确的复合键并不断收到“您的数据存储没有此查询所需的复合索引(开发人员提供)”

这是使用 index.yaml 创建的复合索引。

- 种类:审计

  特性:
  - 名称:身份证
    方向:描述
  - 名称:已删除
  - 名称:公司 ID
    方向:描述
  - 名称:组类型
  - 名称:动作类型

任何有关此主题的帮助将不胜感激!

如果您需要更多信息,请告诉我

4

1 回答 1

2

对于此查询,您需要一个复合索引,其中ID最后一个元素,其排序顺序与查询中的排序顺序相匹配。例如:

- kind: Audit
  properties:
  - name: IsDeleted
  - name: CompanyID
    direction: desc
  - name: GroupType
  - name: ActionType
  - name: ID

(ID 在此索引定义中隐式升序排序。)

于 2016-11-21T17:36:00.690 回答