遇到单表数据量很大的情况,为了提高查询效率,需要把表分为多个文件,本案例为一个Serial的数据库,OrderSerial表数据量太大,现在因为主键(SerialId,类型为BIGINT)自增,所以根据主键范围值来划分表文件:

1~29.999.999    30.000.000~59.999.999    60.000.000~89.999.999    90.000.000~119.999.999...........(此处为主键范围)

过程如下:

1.添加文件组:右键数据库-找到文件组-添加文件组

2.根据生成的系统组添加相应的文件

3.添加相关的函数(此处的值要比其他的值少1个,因为此处是范围值)

CREATE PARTITION FUNCTION partfunOrderSerials (BIGINT)  AS RANGE RIGHT FOR VALUES (30000000,60000000,90000000,120000000,150000000,180000000,210000000)

4.添加SCHEMA

CREATE PARTITION SCHEME partfunOrderSerials   
AS PARTITION partfunOrderSerials   
TO (      
    OrderSerialId00G, 
    OrderSerialId30G, 
    OrderSerialId60G,   
    OrderSerialId90G,   
    OrderSerialId120G,   
    OrderSerialId150G,   
    OrderSerialId180G,   
    OrderSerialId210G
    )

5.创建稀疏索引(创建该索引之前需要清空对应表的稀疏索引,不然报错)

CREATE CLUSTERED INDEX CT_OrderSerials ON dbo.OrderSerials(SerialId)  ON partfunOrderSerials(SerialId) 

上述5步骤完成后,表分区成功.

 方法借鉴自博文:https://blog.csdn.net/Henry_Wu001/article/details/131788915