对两个表进行分区

对两个表进行分区

是否可以将一个表中的数据拆分为两个或更多个表,并让 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。在这种情况下,视图将跨两个表,以便您可以按照所需的任何方式在它们之间随机排列记录。

相关内容