Ism*_*ilS 1 sql-server sql-server-2008 database-partitioning
我是否可以在一个范围内指定在GETDATE()中早于一个月的CreatedDate列中具有值的所有行应放在一个分区中,其余的放在另一个分区中,以便我应该在第二个分区中查询最新数据,在第一个分区中查询归档数据?
不,你不能.分区函数必须是确定性的.确定性函数在使用一组特定输入值调用时始终返回相同的结果.
不幸的是,这
不幸的是,你无法使用GetDate()是不确定的功能.GetDate(),因为它GetDate()是不确定的功能.
有关详细信息,请参见http://shannonlowder.com/2010/08/partitioning/
@Ismail还有其他选择:
根据LastMonth列创建位列LastMonth和分区函数.在开始使用数据之前,您需要每天更新字段.您不需要每天都这样做,也许更新的方法是更新您选择标记新数据(或更改分区功能)的列,一次在您选择的时间段(周/月/季度).我不尝试这种方法,您可能需要在更新列后在表上启动一些维护以获得完整性能.
可能有效的另一个想法是每月进行分区,并在新月开始时更改文件组.例如,如果你想要关于s:上的快速磁盘f:和历史记录的最新数据,你将在s:上有PartitionJan,在f:上有PartitionFebruary,当martch开始将PartitionFebruary移动到s:时,并开始在f:上使用PartitionMartch.
| 归档时间: |
|
| 查看次数: |
1212 次 |
| 最近记录: |