水平分区(Horizontal partitioning)是为一个数据库表而建立至少两个物理文件的过程。数据库表越大,水平分区需要扫描的时间越长。因此,使用水平分区的主要目的是将很少使用的数据转移到另一个文件中。
实现水平分区的通常方式是为每一个分区分配日期范围。例如,假设在给定的应用程序中,利息的日期通常为从当前的年月开始。(其它日期偶尔也会被检索,所以这些日期必须是合法的,但它也不一定在主要物理文件中)。你可以建立两个水平分区──当前数据库和归档数据库,或者你可以建立每一个年度日期的分区,这取决于你的需求。
有关建立一个水平分区的在线信息已经相当完整,所以我现在只是提到几个步骤:
在线的书籍也提供了一个很好的为分区条款而编写的ActiveX脚本。你可以在使用过程中复制和粘贴这一例子,而只需要一些很少的改动,就可以满足自己的需要。(在在线书籍中以“Defining a Horizontal Partition”搜索。)
最近,我检查了我开发过的一个数据库,以查看如何受益于水平分区。在三个特定利息表中,每个表中都有一个DateEntered列,其默认值为GetDate()。我进行了两个分区,将去年作为Current,而将去年之前作为Archive。
去年的销售量已经下滑,利息值只是全部值的十分之一。业绩不是非常好,但也是可以的。另一个方面,多年查询速度很明显感觉到减慢,但这一操作也很少执行,因为这少有这种情况发生。通过使用到水平分区,我从中获得了利润。我的程序都是基于日期的操作。
你的情况可能有些不同,但我建议你去研究并使用它。