SQL Server 分区表
这两天在研究SQL Server大数据量查询的优化问题,因为是项目还未上线,但可预见性的是数据量是几千万级别的
所以的提早解决。
开始由于不太熟悉数据的深层应用,所以走了很多弯路,比如说把表物理分开,然后进行维护,查询。这样通过一些加工
其实也是能满足一些要求,但是对我们程序开发来说就无形中增加了很多的工作量,所以只能再继续找新的方法。
最后,看了一些前辈关于分区表的帖子,才恍然大悟,原来SQL Server自身已经提供了这样强大的机制。
分区表,是从文件存储从物理上将表进行分割,分割成多张小表并用不同文件进行存储,但从逻辑上将却是一张大表,方便我们的开发
第一步:先得创建数据库文件组
数据库-->属性-->文件组 “添加”按钮(这一步可以省略)
数据库-->属性-->文件 “添加” 创建库文件
第二步:创建分区函数以及分区方案
View Code
--创建分区函数 CREATE PARTITION FUNCTION funCustomer(INT) AS RANGE FOR VALUES(1,2,3,4,5,6,7,8,9)
上面这个就是我所创建的分区函数,思路是用0-9的数字来做分区逻辑,(当然我这样的不好处也很容易,0-9这个数据有点浪费,如果是某个有用的字段,将会更合理)
View Code 上面是创建分区方案,将前面的分区函数关联起来
--创建一个分区方案 CREATE PARTITION SCHEME schCustomer AS PARTITION funCustomer TO ( TCus_Customer_0, TCus_Customer_1, TCus_Customer_2, TCus_Customer_3, TCus_Customer_4, TCus_Customer_5, TCus_Customer_6, TCus_Customer_7, TCus_Customer_8, TCus_Customer_9 )
--创建分区表 CREATE TABLE TCus_Customer( [Id] [int] IDENTITY(1,1) NOT NULL, [Name] [varchar](16) NOT NULL, [CusIndex][int] NOT NULL ) ON schCustomer([CusIndex])
最后创建表,将分区方案关联起来,基本上就实现了
基本上算是实现了,加点索引什么的还是比较快的。基本上能在3秒内搞定。
谢谢(smallfools 的博客:http://blog.csdn.net/smallfools/article/details/4930810)


浙公网安备 33010602011771号