[Azure] C# + Microsoft.Azure.Cosmos.Table v1+ Azure Storage Table - 使用 ExecuteQuerySegmented 取得資料
2021-01-13
前幾篇文章,我都是用 CloudTable.ExecuteQuery 來查詢,但是這用得好好的為何 SDK 有出一個 ExecuteQuerySegmented ,原因是因為,如果當你一次要執行的查詢非常大量的時候,假設撈回來是兩萬,但是當 Azure Table 那邊準備兩萬資料傳輸回來,這容易造成 timeout ,所以這時候就是要用 ExecuteQuerySegmented ,但是請記得她一次回來最大的量就是 1000
前置作業 首先你要 安裝 nuget https://www.nuget.org/packages/Microsoft.Azure.Cosmos.Table ,這邊我撰寫案例是用 .net core 3.1;在 Azure Portal 開一個 儲存體帳戶,並且在左側的存取金鑰中拿到 Connection String.
之前文章我把一萬筆資料寫入 分別 Age 1~ 10,000 ,這案例我是撈出 >100 && <=2000 的資料,分別印出來到底撈取了幾次(多少分頁)跟總筆數,案例我是每 500 做一次撈取。
Result:
Segment Page Count:4
All Data Count:1900
這中間只有一個比較特別的觀念就是當 TableContinuationToken 不是 null 就是一直做下去,至於能不能在 Azure Table 那邊先排列好呢 ? 當然是 不支援 !! ,請使用 CosmosDB 吧 :)