查詢與排序

讀取是帳單被寫下的地方。Query 依鍵瞄準單一項目集合;Scan 則讀取整張表格。出於 SQL 直覺去用帶 filter 的 Scan,你就會為讀到的每個項目付費,而不是只為你留下的那幾個。這就是經典的自爆陷阱。

本節談的是有效率地讀取:用鍵來做事、正確地分頁,以及用 sort key 而非在記憶體中排序來排列結果。

已讀 0 / 10測驗
DynamoDB 中的 Query 與 Scan
DynamoDB 中的 Query 與 Scan — Query 只讀一個項目集合並依命中的項目計費,Scan 則在任何 FilterExpression 生效前就讀完整張表。
入門閱讀時間 5 分鐘
DynamoDB 的分頁
DynamoDB 分頁如何運作 — 以 LastEvaluatedKey 與 ExclusiveStartKey 迴圈、為什麼 Limit 不是頁面大小,以及如何對外提供無狀態的游標。
入門閱讀時間 4 分鐘
DynamoDB 篩選策略
DynamoDB 篩選策略比較——partition key、sort key、稀疏索引與 FilterExpression——以及哪一個真正削減你的讀取帳單。
中階閱讀時間 8 分鐘
為什麼 DynamoDB 的 Scan 又慢又貴
為什麼 DynamoDB 的 Scan 又慢又貴、它實際上向你收的是什麼費用,以及如何把一次反射性的 Scan 變成一個只花零頭成本的鍵化 Query。
入門閱讀時間 7 分鐘
DynamoDB 平行掃描
DynamoDB 平行掃描如何用 Segment 與 TotalSegments 把整表讀取拆分給多個工作程序、何時有幫助,以及要避開的輸送量地雷。
進階閱讀時間 7 分鐘
DynamoDB Sort Key 策略
為範圍讀取設計的 DynamoDB 排序索引鍵策略 — 讓排序索引鍵的位元組順序吻合你的讀取順序,一次 Query 就能服務多種存取模式。
中階閱讀時間 8 分鐘
如何以遞減順序查詢 DynamoDB
用 ScanIndexForward=false 以遞減順序查詢 DynamoDB — 最新優先的結果、為什麼排序發生在排序索引鍵上,以及為什麼反向讀取不用多花錢。
入門閱讀時間 5 分鐘
用會變動(易變)的屬性替 DynamoDB 排序
用會變動的屬性替 DynamoDB 排序 — 為什麼索引鍵屬性不可變更、刪除並重建的模式,以及改把它移到 GSI 的排序索引鍵。
中階閱讀時間 5 分鐘
DynamoDB 裡的排序鍵補零
為什麼在 DynamoDB 的字串排序索引鍵裡 "10" 會排在 "2" 前面,以及定寬補零如何讓字典序的位元組順序吻合數字順序。
中階閱讀時間 5 分鐘
知識測驗開始測驗
檢驗你在本節學到的內容。

從 Query 與 Scan 的比較開始 — 它是其餘各篇所仰賴的那個決定。

試用 DynoTable 來對一張線上表格執行這些查詢 — 或用免費的 查詢建構器在瀏覽器裡組出完整的 Query/Scan 請求。