2013-06-28 27 views
2

我在某處讀取RowKey以外的數據並且PartitionKey會導致全表掃描。我期望正確理解整個查詢過程,但是在整個考驗過程中我已經有點空了。Azure表高級查詢

說我有數據對象的幾百萬行的單個存儲。我已經通過PartitionKey將它分成了多個數據子集。假設我按照

var query = new TableQuery<MyEntity>() 
    .Where(TableQuery.CombineFilters(
     TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, pPartition), 
     TableOperators.And, 
     TableQuery.GenerateFilterCondition("Timestamp", QueryComparisons.GreaterThanOrEqual, startTime)); 

創建查詢如何在表上構建此查詢結束?我是否可以控制首先應用哪個過濾器 - 它是應用這些過濾器的順序,所以在這種情況下,我首先會獲得說明.. 100k行的子集,然後應用Timestamp過濾器。

我之所以考慮這個問題,是因爲我想同時使用PartitionKey和RowKey來存儲不同的分離數據,但我也需要能夠儘可能高效地按日期查詢。這個系統的工作負載相當繁重,因此需要很多這樣的請求,所以及時處理它很重要。

回答

1

所有反對票TableStorage查詢應用PatitionKey和第RowKey濾波器第一然後在施加額外的過濾器的每個塊。如果您想通過其他字段提高查詢的性能,您需要將它們作爲PartitionKey或RowKey的一部分包含在其中。這是做到這一點的唯一方法。您可能會發現一些先進的技術來在PartitionKey和RowKey屬性中執行聯接,並從TableStorage中檢索它們。