Amazon DynamoDB
开发人员指南 (API Version 2012-08-10)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

查询并扫描索引

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" }

本页内容: