Khi tạo bảng Dynamodb, hãy chọn Khóa chính và Chỉ mục phụ cục bộ (LSI) để hoạt động Truy vấn trả về các mục bạn muốn.
Các thao tác truy vấn chỉ hỗ trợ đánh giá toán tử ngang nhau của Khóa chính, nhưng có điều kiện (=, <, <=,>,> =, Giữa, Bắt đầu) trên Khóa sắp xếp.
Các thao tác quét thường chậm hơn và tốn kém hơn vì thao tác này phải lặp lại qua từng mục trong bảng của bạn để nhận được các mục bạn yêu cầu.
Thí dụ:
Table: CustomerId, AccountType, Country, LastPurchase
Primary Key: CustomerId + AccountType
Trong ví dụ này, bạn có thể sử dụng thao tác Truy vấn để nhận:
- Một CustomerId với bộ lọc có điều kiện trên AccountType
Thao tác Quét sẽ cần được sử dụng để trả về:
- Tất cả Khách hàng có Loại tài khoản cụ thể
- Các mặt hàng dựa trên bộ lọc có điều kiện theo Quốc gia, tức là Tất cả khách hàng từ Hoa Kỳ
- Các mặt hàng dựa trên bộ lọc có điều kiện theo LastPurchase, tức là Tất cả khách hàng đã mua hàng trong tháng trước
Để tránh các thao tác quét trên các thao tác được sử dụng thường xuyên, tạo Chỉ mục phụ cục bộ (LSI) hoặc Chỉ mục phụ toàn cầu (GSI).
Thí dụ:
Table: CustomerId, AccountType, Country, LastPurchase
Primary Key: CustomerId + AccountType
GSI: AccountType + CustomerId
LSI: CustomerId + LastPurchase
Trong ví dụ này, một hoạt động Truy vấn có thể cho phép bạn nhận được:
- Một CustomerId với bộ lọc có điều kiện trên AccountType
- [GSI] Một bộ lọc có điều kiện trên CustomerIds cho một Loại tài khoản cụ thể
- [LSI] Một CustomerId có bộ lọc có điều kiện trên LastPurchase