Filter 與查詢模式
每個表格分頁都帶有一個 Filter:DynoTable 會把這個述詞狀態轉換成
DynamoDB 請求。學會這些元件如何對應到 query 與 scan,
就掌握了讓這款應用程式變快、讓你的帳單變小的大部分訣竅。
本頁說明 Visual 分頁模式。若要直接撰寫 SQL 風格的查詢, 請切換到 PartiQL;若要進行 join 與聚合,請開啟 Workbench。
Filter 列
Visual 模式會顯示單一橫向的藥丸列:
[Index] [hashKey = value] [rangeKey op value] [+ filter] | [Clear] [Query/Scan]- Index 藥丸 — 你所透過讀取的查詢模式。
- 鍵藥丸 — 該模式的 partition(hash)鍵,以及在有的情況下,sort(range) 鍵。
- Filter 藥丸 — 額外的非鍵條件(scan 過濾條件)。
- 動作按鈕會依你所設定的內容顯示 Query 或 Scan, 並在結果開始串流後變成 Load more。
設定一個值後 DynoTable 就會自動執行;清除或編輯藥丸後, 只要 Filter 再次有效,就會重新執行。

查詢模式
查詢模式就是你所透過讀取的 Index:
PRIMARY— 表格自身的 / 。- 具名的 或 — 其自身的鍵結構。
所選的模式決定了你能對哪些鍵進行 Filter。可從 Index 藥丸切換模式; 鍵藥丸會更新為該模式的 partition key 與 sort key。
Query 與 Scan 的比較
這正是對成本與速度最關鍵的區別:
- 設定一個 Filter,DynoTable 就會發出 一個精準的 — 它只讀取相符的 partition。又便宜又快。
- 沒有它的話就會退回 ,逐頁讀取整個表格(或 Index)。 動作按鈕會顯示 Scan,以明確表示這一點。
鍵 Filter
partition key 藥丸接受一個值;一旦設定,動作就會變成 Query。 sort key 藥丸則在其上加入一個比較:
=、<、<=、>、>=— 有序比較(數字,以及字串的字典序)。begins_with— 對字串或二進位的前綴比對。between— 一個包含端點的範圍;該藥丸會長出第二個值欄位。
字串類型的鍵提供自動完成:當 DynoTable 在背景為表格建立索引時, 它會建議你已經見過的真實值。沒有實用建議的鍵(例如隨機 UUID) 則退回為一般輸入欄位。
Scan Filter
+ filter 藥丸會新增一個非鍵條件 — 任何屬性,而不只是鍵。 每個 Filter 都是一個欄、一個運算子與一個值:
- 比較:
=、≠、<、<=、>、>=、between。 - 成員關係:
in— 比對清單中的任一值(字串或數字)。 - 字串/二進位:
begins_with、contains。 - 存在性:
exists、not exists。 - 類型:
type equals/type not equals(針對 DynamoDB 類型代碼 —S、N、BOOL、…),外加一組用於集合類型的size系列。
所提供的運算子會因應屬性的類型而調整 — 數字會出現順序比較,
字串會出現 begins_with。Scan Filter 會在 query 或 scan 讀取項目之後
才套用,因此它們會縮小結果,卻不會讓 scan 變便宜。請用鍵 Filter
來減少讀取量;用 scan Filter 來精煉傳回的內容。
單一表格設計:複合鍵
單一表格設計會用一個鍵前綴把多種實體類型塞進同一個表格 —
USER#123、ORDER#456、TENANT#acme。DynoTable 會自行辨識這些前綴,
不需要任何設定:
- 鍵會就地解碼。 一個複合值 — 一個大寫前綴,以
#、|或~與其餘部分相連 — 會在每個格線中以其加上標籤的各部分呈現: 表格、PartiQL 結果與 Workbench。僅僅是包含其中一個字元的一般值 (像#FF5733這樣的十六進位顏色、以管線分隔的清單) 則會原封不動地保留。 - 一鍵 Filter 到某個實體。 右鍵點按一列並選擇 Filter to
USER#— 該前綴會直接從那一列的鍵讀取。DynoTable 會對該鍵套用 一個真正的begins_with,作為一個一般的 Filter 藥丸,你可以用平常的 方式(它的 ✕ 或 Clear)清除它。當某一列的 partition 與 sort 鍵 都帶有前綴時,每一個鍵你都會得到一個選項。
沒有對話框、沒有設定,也沒有任何儲存的內容 — 它完全是從你眼前的鍵 即時推導出來的。

排序與分頁
sort key 藥丸帶有一個排序方向切換(遞增/遞減),
對應到 DynamoDB 的 ScanIndexForward。結果會一次一頁地串流 —
Load more 會擷取下一頁,而變更頁面大小
則會從第一頁重新載入。
Run to end
預設情況下,query 或 scan 會在讀取幾頁後暫停,好讓大型表格不會 一次全部載入 — 動作按鈕會顯示 Load more 以擷取下一頁。 當你寧願一口氣拉出全部內容時,請切換執行模式:
- 點按動作按鈕旁的 chevron 並選擇 Run to end。主按鈕會改名為 Scan all / Query all / Run all — 包括你暫停在頁面預算上時, 此時點按它就會一路讀到底。
- 點按那個改名後的按鈕,DynoTable 就會持續擷取頁面,直到整個表格 (或 Index)讀取完畢。這個選擇會在該工作階段內逐分頁記住; 選擇 Paged 即可切換回去。挑選某個模式本身絕不會啟動一次執行 — 它只會為按鈕改名,因此何時觸發由你決定。
在大型表格上,第一次裝填 Run to end 時會先顯示一個確認提示, 附上表格的概略大小與項目數量,讓一次完整 scan 永遠是經過深思的選擇, 而非一場意外。確認以繼續,或取消以維持分頁狀態。

從鍵盤操作:
- ⌘↩ 會執行目前的查詢 — 而當結果暫停在頁面預算上時, 它會繼續到下一頁,而非重頭開始。
- ⌘⇧↩ 一律一口氣讀到底。
- ⌘. 或 Esc 可隨時停止進行中的執行。








