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)

 

 

 

 

 

 

posted @ 2012-07-20 10:13  西山农夫  阅读(282)  评论(0)    收藏  举报