0
我們所有的表實體的RowKey都有它們的種類。
例如在用戶表:RowKey上最快的查詢
PK: yahoo.com
RK: U_user1 ----------- the kind is 'U' it means User
PK: yahoo.com
RK: U_user2
PK: yahoo.com
RK: U_user3
PK: Store1
RK: M_user4 ----------- the kind is 'M' it means Merchant
PK: Store1
RK: M_user5
PK: Store1
RK: M_user6
PK: Store2
RK: M_user7
如果我想搜索所有用戶不準確知道PartitionKey,我會做這樣的:
在Azure存儲資源管理器:
RowKey gt 'U_' and RowKey lt 'V_'
在LINQ:
var list = from e in dao.Table()
where string.Compare(e.RowKey, "U_") > 0 && string.Compare(e.RowKey, "V_") < 0
select e;
我的問題1現在是,如果記錄變大,它仍然會很快嗎?或者我應該把這種類在PartitionKey?但這樣做並不容易。
它說,這篇文章在:
PK: M_Sample
RK: GUID
500 records
而且
:http://blog.maartenballiauw.be/post/2012/10/08/What-PartitionKey-and-RowKey-are-for-in-Windows-Azure-Table-Storage.aspx
Less fast: querying on only RowKey. Doing this will give table storage no pointer on
which partition to search in, resulting in a query that possibly spans multiple partitions,
possibly multiple storage nodes as well. Wihtin a partition, searching on RowKey is still
pretty fast as it’s a unique index.
編輯
我只是在做一些測試
帶着這些疑問:
PartitionKey gt 'M_' and PartitionKey lt 'N_' --- 26 seconds
RowKey gt 'U_' and RowKey lt 'V_' ----- 36 seconds
它表明,我必須真正使用PartitionKey作爲搜索關鍵字。
你知道任何解釋你的方法的文章嗎?我覺得很難理解。你的分區鍵變得更加複雜。另一個問題,RowKey的價值是什麼? – fiberOptics
我們從Azure存儲團隊引用此博客文章:http://blogs.msdn.com/b/windowsazurestorage/archive/2010/11/06/how-to-get-most-out-of-windows-azure-tables的.aspx。我同意數據將更加分散,因爲會有很多單個項目分區。對於RowKey,這取決於。如果您的PartitionKey是唯一的,您可以將RowKey留空。 –
+1。感謝您的鏈接。您可能還想看到我的編輯.. – fiberOptics