本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用其主索引鍵讀取項目的差異
資料庫常見的一種存取模式是從資料表讀取單一項目。您必須指定您想要讀取之項目的主索引鍵。
使用其主索引鍵搭配 讀取項目 SQL
在 中SQL,您會使用 SELECT
陳述式從資料表擷取資料。您可以在結果中請求一或多個資料行 (或使用 *
運算子請求所有資料行)。WHERE
子句則可決定要傳回的資料列。
下列為從 Music 資料表擷取單一資料列的 SELECT
陳述式。WHERE
子句會指定主索引鍵值。
SELECT *
FROM Music
WHERE Artist='No One You Know' AND SongTitle = 'Call Me Today'
您可以修改此查詢,只擷取部分資料行。
SELECT AlbumTitle, Year, Price
FROM Music
WHERE Artist='No One You Know' AND SongTitle = 'Call Me Today'
請注意,此資料表的主要索引鍵由 Artist 和 組成SongTitle。
在 DynamoDB 中使用項目的主索引鍵讀取項目
在 Amazon DynamoDB 中,您可以使用 DynamoDB API或 PartiQL (一種 SQL相容的查詢語言) 從資料表讀取項目。
- DynamoDB API
-
透過 DynamoDB API,您可以使用 PutItem
操作將項目新增至資料表。
DynamoDB 提供 GetItem
操作,可依主索引鍵擷取項目。GetItem
的效率極高,因為它可供您直接存取項目的實體位置。(如需詳細資訊,請參閱 DynamoDB 中的分割區和資料分佈。)
根據預設,GetItem
會傳回整個項目及其所有屬性。
{
TableName: "Music",
Key: {
"Artist": "No One You Know",
"SongTitle": "Call Me Today"
}
}
您可以新增 ProjectionExpression
參數,以只傳回某些屬性。
{
TableName: "Music",
Key: {
"Artist": "No One You Know",
"SongTitle": "Call Me Today"
},
"ProjectionExpression": "AlbumTitle, Year, Price"
}
請注意,此資料表的主要索引鍵由 Artist 和 組成SongTitle。
DynamoDB GetItem
操作非常有效率。它使用主索引鍵值判斷所指項目的確切儲存位置,然後直接從該位置擷取項目。如果依主索引鍵值擷取項目,則SQLSELECT
陳述式效率類似。
此SQLSELECT
陳述式支援多種查詢和資料表掃描。DynamoDB 使用其 Query
和 Scan
操作提供類似功能,這些操作會在 查詢資料表的差異 和 掃描資料表的差異 中說明。
SQL SELECT
陳述式可以執行資料表聯結,可讓您同時從多個資料表擷取資料。在資料庫資料表標準化且資料表間的關聯性明確時,聯結最為有效。但是,若您在單一 SELECT
陳述式中聯結太多資料表,應用程式的效能可能會受到影響。您可以使用資料庫複寫、具體化檢視,或查詢重寫來因應這項問題。
DynamoDB 是非關聯式資料庫,不支援資料表聯結。若您正在將現有應用程式從關聯式資料庫遷移至 DynamoDB,必須將您的資料模型去標準化,才不需聯結。
- PartiQL for DynamoDB
-
借助 PartiQL,您可以使用 PartiQL Select
陳述式,使用 ExecuteStatement
操作讀取資料表的項目。
SELECT AlbumTitle, Year, Price
FROM Music
WHERE Artist='No One You Know' AND SongTitle = 'Call Me Today'
請注意,此資料表的主要索引鍵由 Artist 和 組成 SongTitle。
PartiQL Select 陳述式也可以用來查詢或掃描 DynamoDB 資料表
如需使用 Select
和 ExecuteStatement
的程式碼範例,請參閱 適用於 DynamoDB 的 PartiQL Select 陳述式。