前提
当表的数据量特大的时候,可以使用数据库分表 来提高查询速度,我设计的方案是 将表文件 按照每一年的数据存一个文件中
测试的数据表内300W左右的数据,同样是查询前1000行,分表前查询速度20s,分表后速度3秒
操作流程
-
增加文件组
-
增加文件
-
增加分区函数
-
增加分区方案
-
增加存储过程 动态扩充文件,文件组,动态修改分区函数和分区方案
-
对历史表使用分区方案
其中5不是必要的,但是对于系统来说,是一个优化的点
具体语句
@dataBaseName 数据库名
@tmpfg1 文件组名
@tmpfg2 文件组名
@fileName 文件名
@filePath 文件存放路径(格式为:存放目录路径+@fileName.ndf)
@partFunctionName 分区函数的名称
@schemeName 分区方案的名称
1.创建文件组
ALTER DATABASE '+@dataBaseName+' ADD FILEGROUP '+@tmpfg1+'
2.增加文件到文件组
ALTER DATABASE '+@dataBaseName+' ADD FILE(NAME ='''+@tmpfile1+''',FILENAME = '''+@filePath+'\'+@tmpfile1+'.ndf'+''')TO FILEGROUP ['+@tmpfg1+']'
3.创建分区函数
CREATE PARTITION FUNCTION '+@partFunctionName+'(datetime) AS RANGE RIGHT FOR VALUES (''2018-01-01T00:00:00.000'')
我这里策略是以2018-01-01的这个为时间点,分割数据表
4.创建分区方案
CREATE PARTITION SCHEME '+@schemeName+' AS PARTITION '+@partFunctionName+' TO ('+@tmpfg1+','+@tmpfg2+')
到此为止 ,给表分区的前提就已经都做好了
未完待续