《SQLserver创建分区表》由会员分享,可在线阅读,更多相关《SQLserver创建分区表(4页珍藏版)》请在金锄头文库上搜索。
1、-如果你的数据库中*一个表中的数据满足以下几个条件,则你就要考虑创立分区表了。 1、数据库中*个表中的数据很多。 很多是什么概念.一万条.两万条.还是十万条、一百万条.这个,我觉得是仁者见仁、智者见智的问题。当然数据表中的数据多到查询时明显感觉到数据很慢了, 则, 你就可以考虑使用分区表了。 如果非要我说一个数值的话, 我认为是 1 亿条。 2、但是,数据多了并不是创立分区表的惟一条件,哪怕你有一千万条记录,但是这一千万条记录都是常用的记录, 则最好也不要使用分区表, 说不定会得不偿失。 只有你的数据是分段的数据,则才要考虑到是否需要使用分区表。 3、什么叫数据是分段的.这个说法虽然很不专业,
2、但很好理解。比方说,你的数据是以年为分隔的,对于今年的数据而言,你常进展的操作是添加、修改、删除和查询,而对于往年的数据而言,你几乎不需要操作,或者你的操作往往只限于查询, 则恭喜你,你可以使用分区表。换名话说,你对数据的操作往往只涉及到一局部数据而不是所有数据的话, 则你就可以考虑什么分区表了。则,什么是分区表呢.简单一点说,分区表就是将一个大表分成假设干个小表。假设,你有一个销售记录表,记录着每个每个商场的销售情况, 则你就可以把这个销售记录表按时间分成几个小表, 例如说 5 个小表吧。2021 年以前的记录使用一个表,2021 年的记录使用一个表,2021 年的记录使用一个表,2021
3、年的记录使用一个表,2021 年以后的记录使用一个表。则,你想查询哪个年份的记录,就可以去相对应的表里查询, 由于每个表中的记录数少了, 查询起来时间自然也会减少。但将一个大表分成几个小表的处理方式,会给程序员增加编程上的难度。以添加记录为例,以上 5 个表是独立的 5 个表,在不同时间添加记录的时候,程序员要使用不同的SQL语句,例如在 2021 年添加记录时,程序员要将记录添加到2021 年那个表里;在 2021 年添加记录时,程序员要将记录添加到2021 年的那个表里。这样,程序员的工作量会增加,出错的可能性也会增加。使用分区表就可以很好的解决以上问题。 分区表可以从物理上将一个大表分成
4、几个小表,但是从逻辑上来看,还是一个大表。接着上面的例子,分区表可以将一个销售记录表分成五个物理上的小表,但是对于程序员而言,他所面对的依然是一个大表,无论是2021 年添加记录还是 2021 年添加记录,对于程序员而言是不需要考虑的, 他只要将记录插入到销售记录表这个逻辑中的大表里就行了。SQL Server 会自动地将它放在它应该呆在的那个物理上的小表里。同样,对于查询而言,程序员也只需要设置好查询条件,OK,SQL Server 会自动将去相应的表里查询,不用管太多事了。这一切是不是很诱人.确实,则我们就可以开场动手创立分区表了。.z.-第一、创立分区表的第一步,先创立数据库文件组,但这
5、一步可以省略,因为你可以直接使用 PRIMARY 文件。但我个人认为,为了方便管理,还是可以先创立几个文件组,这样可以将不同的小表放在不同的文件组里, 既便于理解又可以提高运行速度。 创立文件组的方法很简单,翻开SQL Server Management Studio,找到分区表所在数据库,右键单击,在弹出的菜单里选择属性。然后选择文件组选项,再单击下面的添加按钮,如以下图所示:第二,创立了文件组之后,还要再创立几个数据库文件。 为什么要创立数据库文件,这很好理解,因为分区的小表必须要放在硬盘上,而放在硬盘上的什么地方呢.当然是文件里啦。再说了,文件组中没有文件,文件组还要来有啥用呢.还是在上
6、图的那个界面,选择文件选项,然后添加几个文件。在添加文件的时候要注意以下几点: 1、 不要忘记将不同的文件放在文件组中。 当然一个文件组中也可以包含多个不同的文件。 2、 如果可以的话, 将不同的文件放在不同的硬盘分区里, 最好是放在不同的独立硬盘里。要知道 IQ 的速度往往是影响 SQL Server 运行速度的重要条件之一。将不同的文件放在不同的硬盘上,可以加快 SQL Server 的运行速度。在本例中,为了方便起见,将所有数据库文件都放在了同一个硬盘下,并且每个文件组中只有一个文件。如以下图所示。第三、创立一个分区函数。这一步是必须的了,创立分区函数的目的是告诉SQL Server 以
7、什么方式对分区表进展分区。这一步必须要什么SQL 脚本来完成。以上面的例子,我们要将销售表按时间分成 5 个小表。假设划分的时间为:第 1 个小表:2021-1-1 以前的数据不包含 2021-1-1。第 2 个小表:2021-1-1包含 2021-1-1到 2021-12-31 之间的数据。第 3 个小表:2021-1-1包含 2021-1-1到 2021-12-31 之间的数据。第 4 个小表:2021-1-1包含 2021-1-1到 2021-12-31 之间的数据。第 5 个小表:2021-1-1包含 2021-1-1之后的数据。则分区函数的代码如下所示:CREATE PARTITIO
8、N FUNCTION partfunSale (datetime)AS RANGE RIGHT FOR VALUES (20210101,20210101,20210211,20210101)其中: 1、CREATE PARTITION FUNCTION意思是创立一个分区函数。 2、partfunSale 为分区函数名称。 3、AS RANGE RIGHT为设置分区围的方式为 Right,也就是右置方式。 4、FOR VALUES (20210101,20210101,20210211,20210101)为按这几个值来分区。.z.-这里需要说明的一下,在Values 中,20210101、20
9、210101、20210211、20210101,这些都是分区的条件。 20210101代表 2021 年 1 月 1 日,在小于这个值的记录,都会分成一个小表中,如表1;而小于或等于20210101并且小于20210101的值,会放在另一个表中,如表2。以此类推,到最后,所有大小或等于20210101的值会放在另一个表中,如表5。也许有人会问, 为什么值 20210101会放在表 2 中, 而不是表 1 中呢.这是由 AS RANGERIGHT 中的 RIGHT 所决定的, RIGHT 的意思是将等于这个值的数据放在右边的那个表里,也就是表 2 中。 如果您的 SQL 语句中使用的是 Lef
10、t 而不是 RIGHT, 则就会放在左边的表中,也就是表 1 中。第四、创立一个分区方案。分区方案的作用是将分区函数生成的分区映射到文件组中去。分区函数的作用是告诉 SQL Server,如何将数据进展分区,而分区方案的作用则是告诉SQLServer 将已分区的数据放在哪个文件组中。分区方案的代码如下所示:CREATE PARTITION SCHEME partschSaleAS PARTITION partfunSaleTO ( Sale2021, Sale2021, Sale2021, Sale2021, Sale2021)其中: 1、CREATE PARTITION SCHEME 意思是
11、创立一个分区方案。 2、partschSale 为分区方案名称。 3、AS PARTITION partfunSale 说明该分区方案所使用的数据划分条件也就是所使用的分区函数为 partfunSale。 4、TO 后面的容是指 partfunSale 分区函数划分出来的数据对应存放的文件组。到此为止,分区函数和分区方案就创立完毕了。创立后的分区函数和分区方案在数据库的存储中可以看到,如以下图所示:1. 最后,创立分区表,创立方式和创立普遍表类似,如下所示:CREATE TABLE Sale(2. Id int IDENTITY(1,1) NOT NULL,.z.-3.4.5.其中: Name
12、 varchar(16) NOT NULL, SaleTimedatetime NOT NULL) ON partschSale(SaleTime) 1、CREATE TABLE 意思是创立一个数据表。 2、Sale 为数据表名。 3、()中为表中的字段,这里的容和创立普通数据表没有什么区别,惟一需要注意的是不能再创立聚集索引了。道理很简单, 聚集索引可以将记录在物理上顺序存储的,而分区表是将数据分别存储在不同的表中,这两个概念是冲突的,所以,在创立分区表的时候就不能再创立聚集索引了。 4、ON partschSale()说明使用名为 partschSale 的分区方案。 5、partschSale()括号中为用于分区条件的字段是 SaleTime。 OK,一个物理上是别离的,逻辑上是一体的分区表就创立完毕了。查看该表的属性,可以看到该表已经属于分区表了。.z.