인덱스 쿼리 및 스캔 - Amazon DynamoDB

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

인덱스 쿼리 및 스캔

Amazon DynamoDB의 QueryScan 작업과 SQL의 SELECT 문을 사용한 인덱스 쿼리 및 스캔을 비교합니다.

SQL에서 인덱스 쿼리 및 스캔

관계형 데이터베이스에서는 직접 인덱스를 다루지 않습니다. 그 대신 SELECT 문을 실행하여 테이블을 쿼리하며, 쿼리 옵티마이저가 인덱스를 사용할 수 있습니다.

쿼리 옵티마이저는 사용 가능한 인덱스를 평가하고 그 인덱스로 쿼리 속도를 높일 수 있는지 파악하는 RDBMS(관계형 데이터베이스 관리 시스템)의 구성 요소입니다. 인덱스를 사용하여 쿼리 속도를 높일 수 있는 경우, RDBMS는 먼저 인덱스에 액세스한 다음 인덱스를 사용해 테이블에서 데이터를 찾습니다.

다음은 성능을 개선하는 GenreAndPriceIndex데 사용할 수 있는 몇 가지 SQL 문입니다. Music 테이블에 충분한 데이터가 있어서 쿼리 옵티마이저가 전체 테이블을 단순히 스캔하기보다는 이 인덱스를 사용하기로 결정한다고 가정합니다.

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

DynamoDB에서 인덱스 쿼리 및 스캔

DynamoDB에서는 테이블에서와 동일하게 인덱스에서 직접 QueryScan 작업을 수행합니다. DynamoDB API 또는 PartiQL(SQL 호환 쿼리 언어)을 사용하여 인덱스를 쿼리하거나 스캔할 수 있습니다. TableNameIndexName을 모두 지정해야 합니다.

다음은 GenreAndPriceIndexDynamoDB에서 사용하는 몇 가지 쿼리입니다. (이 인덱스의 키 스키마는 GenrePrice로 구성됩니다.)

DynamoDB API
// All of the rock songs { TableName: "Music", IndexName: "GenreAndPriceIndex", KeyConditionExpression: "Genre = :genre", ExpressionAttributeValues: { ":genre": "Rock" }, };

이 예제에서는 속성 전부가 아니라 일부만 결과에 표시하려 한다는 것을 나타내기 위해 ProjectionExpression을 사용합니다.

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

다음은 스캔온입니다. GenreAndPriceIndex

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

PartiQL에서는 PartiQL Select 문을 사용하여 인덱스에 대한 쿼리 및 스캔을 수행합니다.

// All of the rock songs SELECT * FROM Music.GenreAndPriceIndex WHERE Genre = 'Rock'
// All of the cheap country songs SELECT * FROM Music.GenreAndPriceIndex WHERE Genre = 'Rock' AND Price < 0.50

다음은 스캔 온입니다 GenreAndPriceIndex.

// Return all of the data in the index SELECT * FROM Music.GenreAndPriceIndex
참고

Select를 사용하는 코드 예제는 DynamoDB의 PartiQL select 문 섹션을 참조하세요.