使用查詢操作的其他方面 - Amazon DynamoDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用查詢操作的其他方面

限制結果集的項目數

您可以使用 Query 操作來限制其讀取的項目數。若要執行此作業,請將 Limit 參數設為您希望的最大項目數。

例如,假設您 Query 一份資料表,將 Limit 值設為 6 且不使用篩選條件表達式。Query 結果會包含資料表中符合請求索引鍵條件表達式的前六個項目。

現在假設您在 Query 中新增一個篩選條件表達式。在此情況下,DynamoDB 最多可讀取六個項目,然後只傳回符合篩選條件表達式的項目。最後的 Query 結果包含六個或更少的項目,即使有更多項目符合篩選條件表達式 (如果 DynamoDB 持續讀取更多項目)。

計算結果中的項目

除了符合您條件的項目之外,Query 回應還包含了下列元素:

  • ScannedCount:套用篩選條件表達式 (若有) 符合索引鍵條件表達式的項目數。

  • Count:套用篩選條件表達式 (若有) 剩餘的項目數。

注意

若不使用篩選條件表達式,ScannedCountCount 就會有相同的值。

Query 結果集的大小大於 1 MB,則 ScannedCountCount 僅代表總項目的部分計數。您需要執行多項 Query 操作,才能擷取所有的結果 (請參閱分頁表查詢結果)。

每個 Query 回應都包含經該特定 Query 請求處理過的項目 ScannedCountCount。若要取得所有 Query 請求的總計,您可以為 ScannedCountCount 記錄流水帳。

查詢使用的容量單位

您可以 Query 任何資料表或次要索引,只要您提供分割索引鍵屬性的名稱以及該屬性的單一值即可。Query 會傳回具有該分割區索引鍵值的所有項目。您可以選擇是否提供排序索引鍵屬性,並使用比較運算子縮小搜尋結果。QueryAPI​ 操作會使用讀取容量單位,如下所示。

若您對下列進行 Query DynamoDB 使用的讀取容量單位就會來自...
資料表 該資料表的佈建讀取容量。
全域次要索引 該索引的佈建讀取容量。
本機次要索引 該基礎資料表的佈建讀取容量。

根據預設,Query 操作不會傳回任何使用之讀取容量的相關資料。但您可以在 ReturnConsumedCapacity 請求中指定 Query 參數,來取得這項資訊。下列為 ReturnConsumedCapacity 的有效設定:

  • NONE:不會傳回耗用的容量資料。(此為預設值)。

  • TOTAL:回應包括耗用的讀取容量單位總數。

  • INDEXES:回應顯示耗用的讀取容量單位總數,以及每個資料表和存取之索引的耗用容量。

DynamoDB 會根據項目數量和這些項目的大小 (而不是傳回給應用程式的資料量) 來計算使用的讀取容量單位數量。因此,無論您請求所有屬性 (預設行為) 或只請求部分屬性 (使用投影表達式),使用的容量單位數都相同。無論您是否使用篩選器運算式,數字也相同。 Query消耗最小讀取容量單位以每秒執行一次強烈一致讀取,或每秒針對 4 KB 以下的項目執行兩次最終一致讀取。如果您需要讀取大於 4KB 的項目,DynamoDB 需要額外的讀取請求單位。空白資料表和具有稀疏數量分割索引鍵的非常大型資料表,可能會看到額外的 RCU 計費超出查詢的資料量。這涵蓋了服務Query請求的成本,即使沒有數據存在。

查詢的讀取一致性

根據預設,Query 操作會執行最終一致讀取。這表示 Query 的結果可能不會反映最近完成之 PutItemUpdateItem 操作所造成的變更。如需詳細資訊,請參閱 讀取一致性

若您需要強烈一致讀取,請在 ConsistentRead 請求中將 true 參數設為 Query