2011-02-28 135 views
1

我可以從GETDATE(早於一個月了具有價值CreatedDate列中的所有行指定某個範圍內)應放置在一個分區和其他休息,讓我應該查詢第二個分區的最新數據,第一個查詢是否存檔數據?分區表 - SQL Server 2008的

回答

5

不,你不能。分區功能必須是deterministic。確定性函數每次使用特定的一組輸入值調用時都會返回相同的結果。 不幸的是, GetDate()是不確定的功能。 不幸的是,你不能使用GetDate(),因爲GetDate()是不確定的功能。

更多細節

http://shannonlowder.com/2010/08/partitioning/ @Ismail 有替代方案:

創建位列LastMonth和分區功能基於LastMonth列。在開始使用數據之前,您需要每天更新字段。你不需要每天做,也許是更好的方式來更新列,你選擇你的標誌新鮮數據(或更改分區功能),在一個時期,一旦你選擇(周/月/季度)。 我不要嘗試這種方法,您可能需要更新列後,開始爲全性能上表中的一些維護。

,可能是工作的另一個想法是讓分區每個月,並更改文件組時,新的月份開始。例如,如果你想在快速F盤的最新數據:和歷史:,你將有PartitionJan對S:和PartitionFebruary在F:當martch開始移動PartitionFebruary送:,並開始F使用PartitionMartch:。

+1

我不會形容爲「不幸」 - 如果'GETDATE()'總是返回的值相同,那將是非常沒有意義的。 – 2011-02-28 10:47:52

+0

不幸的是,他計劃:) – Branimir 2011-02-28 11:06:52

+0

非常感謝伊斯梅爾不能設置分區。對於這種情況,我可以提供一些更好的選擇嗎? – IsmailS 2011-03-01 06:48:02