本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
CREATEINDEX亚马逊中的命令 QLDB
重要
终止支持通知:现有客户可以在2025年7月31日终止支持QLDB之前使用亚马逊。有关更多详细信息,请参阅将亚马逊QLDB账本迁移到亚马逊 Aurora Postgr SQL
在 Amazon 中QLDB,使用CREATE INDEX
命令为表中的文档字段创建索引。
要了解如何控制对特定表运行此 PartiQL 命令的访问权限,请参阅。开始使用 Amazon 中的标准权限模式 QLDB
重要
QLDB需要索引才能有效地查找文档。如果没有索引,则QLDB需要在读取文档时进行全表扫描。这可能会导致大型表出现性能问题,包括并发冲突与事务超时。
为避免表扫描,必须在索引字段或文档 ID 上使用相等运算符(=
或IN
)运行带有WHERE
谓词子句的语句。有关更多信息,请参阅 优化查询性能。
创建索引时应注意以下限制:
-
只能在单个顶级字段创建索引。不支持复合索引、嵌套索引、唯一索引以及基于函数的索引。
-
您可以为任何 Ion 数据类型创建索引,其中包括
list
和struct
。但是,无论 Ion 类型如何,您都只能通过整个 Ion 值进行索引查找。例如,使用list
类型作为索引时,不能按列表中的一个项目进行索引查找。 -
只有使用相等谓词时,查询性能才会得到改善;例如
WHERE indexedField = 123
或WHERE indexedField IN (456, 789)
。QLDB不支持查询谓词中的不等式。因此,未实施范围过滤扫描。
-
索引字段名称区分大小写,且最大长度可为 128 个字符。
-
中的索引创建QLDB是异步的。非空表上完成索引所需的时间取决于表的大小。有关更多信息,请参阅 管理索引。
语法
CREATE INDEX ON
table_name
(field
)
参数
table_name
-
要在其中创建索引的表的名称。表必须已经存在。
表名称区分大小写。
field
-
要为其创建索引的文档字段的名称。该字段必须为顶级属性。
索引字段名称区分大小写,且最大长度可为 128 个字符。
您可以为任何 Amazon Ion 数据类型创建索引,包括
list
和struct
。但是,无论 Ion 类型如何,您都只能通过整个 Ion 值进行索引查找。例如,使用list
类型作为索引时,不能按列表中的一个项目进行索引查找。
返回值
tableId
— 您在其上创建索引的表的唯一 ID。
示例
CREATE INDEX ON VehicleRegistration (LicensePlateNumber)
CREATE INDEX ON Vehicle (VIN)
使用驱动程序以编程方式运行
要了解如何使用驱动程序以编程方式运行此语句,请参阅QLDB驱动程序入门中的以下教程: