是否可以将一个表中的数据拆分为两个或更多个表,并让 SQL 对其进行分区?目标是将历史数据放在 mytable_old 中,而将当前数据放在 mytable 中。运行查询时,sql 可以根据查询谓词从两者/任一表中获取数据。
例如,所有早于 2011 年的数据都进入 mytable_old,而 2011 年及更新的数据则保留在 mytable 中。
select * from mytable where date between 12/1/2010 and 12/1/2011
将从两个表中拉取。这可能吗?
如果可能的话,我宁愿不使用视图。我想避免在旧数据上建立任何索引。
答案1
为了实现这一点,您需要设置一个视图。
最好使用 SQL Server 企业版,并使用表分区对表进行分区。然后,您可以拥有两个或更多个分区,并且只会查询所需的分区。
答案2
您可以尝试过滤索引。
CREATE INDEX IX_SomeIndex ON SomeTable (
SomeColumn,
AnotherColumn
)
WHERE DateColumn >= '1/1/2011'
然后它将只索引比指定日期更新的内容。
答案3
实现此目的的一种方法是使用VIEW
。在这种情况下,视图将跨两个表,以便您可以按照所需的任何方式在它们之间随机排列记录。