在 Amazon QLDB 中创建索引命令 - Amazon Quantum Ledger Database (Amazon QLDB)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 Amazon QLDB 中创建索引命令

在 Amazon QLDB 中,使用CREATE INDEX命令为表中的文档字段创建索引。

要了解如何控制对特定表运行此 PartiQL 命令的访问权限,请参阅请参阅《Amazon QLDB 开发人员》中的标准权限模式入门

重要

QLDB 需要索引才能高效查找文档。如果没有索引,QLDB 在读取文档时需进行全表扫描。这可能会导致大型表出现性能问题,包括并发冲突与事务超时。

为避免表扫描,必须在索引字段或文档 ID 上使用相等运算符 (=IN) 运行带有WHERE谓词子句的语句。有关更多信息,请参阅优化查询性能

创建索引时应注意以下限制:

  • 只能在单个顶级字段创建索引。不支持复合索引、嵌套索引、唯一索引以及基于函数的索引。

  • 您可以为任何 Ion 数据类型创建索引,其中包括 liststruct。但是,无论 Ion 类型如何,您都只能通过整个 Ion 值进行索引查找。例如,使用 list 类型作为索引时,不能按列表中的一个项目进行索引查找。

  • 只有使用相等谓词时,查询性能才会得到改善;例如WHERE indexedField = 123WHERE indexedField IN (456, 789)

    QLDB 不支持查询谓词不等式。因此,未实施范围过滤扫描。

  • 索引字段名称区分大小写,且最大长度可为 128 个字符。

  • 在 QLDB 中创建索引具有异步特点。非空表上完成索引所需的时间取决于表的大小。有关更多信息,请参阅管理索引

语法

CREATE INDEX ON table_name (field)

参数

table_name

要在其中创建索引的表的名称。表必须已经存在。

表名称区分大小写。

field

要为其创建索引的文档字段的名称。该字段必须为顶级属性。

索引字段名称区分大小写,且最大长度可为 128 个字符。

您可以为任何 Amazon Ion 数据类型创建索引,包括 liststruct。但是,无论 Ion 类型如何,您都只能通过整个 Ion 值进行索引查找。例如,使用 list 类型作为索引时,不能按列表中的一个项目进行索引查找。

返回值

tableId — 您在其上创建索引的表的唯一 ID。

示例

CREATE INDEX ON VehicleRegistration (LicensePlateNumber)
CREATE INDEX ON Vehicle (VIN)

使用驱动程序以编程方式运行

要了解如何使用 QLDB 驱动程序以编程方式运行此语句,请参阅驱动程序入门中的以下教程: