遇到单表数据量很大的情况,为了提高查询效率,需要把表分为多个文件,本案例为一个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