My favorites | 中文(简体) | Sign in

配置索引

应用程序所进行的每个数据库查询都需要对应的索引。简单查询(例如单个属性的查询)的索引会自动创建。复杂查询的索引必须在名为 index.yaml 的配置文件中进行定义。该文件使用应用程序上传,以便在数据库中创建索引。

当应用程序尝试执行需要索引的查询,但该索引在配置文件中没有相应的条目时,开发网络服务器 (dev_appserver.py) 会自动向该文件添加项目。您可以通过编辑文件调整索引或手动创建新索引。

提示:如果应用程序进行的每个查询都使用开发网络服务器进行了测试,那么在 index.yaml 中生成的条目将是完整的。如果应用程序进行需要索引的查询,而所需的索引未在开发网络服务器上测试,您只需手动编辑文件即可。

有关索引的详细信息,请参阅查询和索引

以下是 index.yaml 文件的示例:

indexes:

- kind: Cat
  ancestor: no
  properties:
  - name: name
  - name: age
    direction: desc

- kind: Cat
  properties:
  - name: name
    direction: asc
  - name: whiskers
    direction: desc

- kind: Store
  ancestor: yes
  properties:
  - name: business
    direction: asc
  - name: owner
    direction: asc

index.yaml 的语法为 YAML 格式。有关该语法的详细信息,请参阅 YAML 网站

提示:YAML 格式支持注释。以井号 (#) 字符开头的行会被忽略:
# This is a comment.

index.yaml 文件格式

index.yaml 具有名为indexes的单独列表元素。列表中的每个元素代表应用程序的一个索引。

索引元素可以有以下元素:

kind

查询的实体类型。通常情况下,这是定义实体的模型的 Model 类的名称。该元素为必需的元素。

properties

要作为索引的列包含的属性列表排列顺序如下:先是等效过滤器中使用的属性,后面是不等效过滤器中使用的属性,然后是排列顺序及其方向。

该列表中的每个元素都有以下元素:

name

属性的数据库名称。

direction

排序方向,asc 代表升序,desc 代表降序。只有查询的排列顺序中使用的属性才需要它,且必须与查询使用的方向匹配。默认为 asc

ancestor

如果查询有祖先子句(Query.ancestor() 或 GQL ANCESTOR IS 子句),则为 yes。默认为 no

自动和手动建立索引

当开发网络服务器向 index.yaml 添加生成的索引定义时,它也在以下行执行同样的操作,并在必要时将其插入。

# AUTOGENERATED

开发网络服务器将该行下方的所有索引定义视为自动,且可能在应用程序进行查询时更新该行下的现有定义。

该行上方的所有索引定义被视为手动控制,不由开发网络服务器进行更新。网络服务器只会在行下方进行更改,而且只有当整个 index.yaml 文件没有说明应用程序所执行的查询的索引时才这样做。要控制自动索引定义,请将其移到该行上方。