Amazon DynamoDB
开发人员指南 (API Version 2012-08-10)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

查询并扫描索引

SQL

在关系数据库中,不能直接使用索引。相反,您通过发出 SELECT 语句来查询表,查询优化程序可使用任何索引。

查询优化程序是一个关系数据库管理系统 (RDBMS) 组件,它将评估可用索引并确定是否可使用这些索引来加快查询速度。如果索引可用来加快查询速度,则 RDBMS 会先访问索引,然后使用索引查找表中的数据。

以下几个 SQL 语句可使用 GenreAndPriceIndex 提高性能。我们假定 Music 表包含足够多的数据以促使查询优化程序决定使用此索引,而不是扫描整个表。

Copy
/* All of the rock songs */ SELECT * FROM Music WHERE Genre = 'Rock';
Copy
/* All of the cheap country songs */ SELECT Artist, SongTitle, Price FROM Music WHERE Genre = 'Country' AND Price < 0.50;

DynamoDB

在 DynamoDB 中,直接对索引执行 Query 操作,就如同对表执行此操作一样。您必须指定 TableNameIndexName

以下是 DynamoDB 中对 GenreAndPriceIndex 执行的一些查询。 (此索引的键架构包含 GenrePrice。)

Copy
// All of the rock songs { TableName: "Music", IndexName: "GenreAndPriceIndex", KeyConditionExpression: "Genre = :genre", ExpressionAttributeValues: { ":genre": "Rock" }, };
Copy
// All of the cheap country songs { TableName: "Music", IndexName: "GenreAndPriceIndex", KeyConditionExpression: "Genre = :genre and Price < :price", ExpressionAttributeValues: { ":genre": "Country", ":price": 0.50 }, ProjectionExpression: "Artist, SongTitle, Price" };

此示例使用 ProjectionExpression 指示我们只希望结果中显示部分而不是全部属性。

您也可以对二级索引执行 Scan 操作,就如同对表执行此操作一样。以下是对 GenreAndPriceIndex 进行的扫描:

Copy
// Return all of the data in the index { TableName: "Music", IndexName: "GenreAndPriceIndex" }

本页内容: