笔记104 创建分区表的步骤
笔记104 创建分区表的步骤
1 --创建分区表的步骤 2 --创建分区函数 3 USE partionTest 4 GO 5 CREATE PARTITION FUNCTION PartionByInt(INT ) 6 AS RANGE LEFT FOR VALUES (100,200,300) 7 GO 8 --3个分区点就一定是4段分区 9 --left:负无穷-100,101-200,201-300,301-正无穷 10 --right:100-199,200-299,300-399,400-499 11 12 --创建分区方案 13 USE partionTest 14 GO 15 CREATE PARTITION SCHEME PartionByIntScheme 16 AS PARTITION PartionByInt 17 TO (FileGroup001,FileGroup002,FileGroup003,FileGroup004); 18 --这里刚好是4个段,每个段一个文件组,如果加多一个文件组不知道SQL会怎麽分配这些分区到文件组 19 20 21 --创建表 22 USE partionTest 23 GO 24 CREATE TABLE testPartionTable 25 (id INT NOT NULL , 26 ItemNo CHAR( 20), 27 ItemName CHAR( 40)) 28 ON PartionByIntScheme(ID); 29 --id为分区列 30 31 32 33 --插入数据 34 USE partionTest 35 GO 36 37 DECLARE @count INT 38 SET @count =-25 39 WHILE @count <=100 40 BEGIN 41 INSERT INTO dbo.testPartionTable 42 SELECT @count ,'ITEM'+CONVERT( VARCHAR(6),@count),'>0 and <100' 43 SET @count =@count +1 44 END 45 46 SET @count =101 47 WHILE @count <=200 48 BEGIN 49 INSERT INTO dbo.testPartionTable 50 SELECT @count ,'ITEM'+CONVERT( VARCHAR(6),@count),'>100 and <200' 51 SET @count =@count +1 52 END 53 54 SET @count =201 55 WHILE @count <=300 56 BEGIN 57 INSERT INTO dbo.testPartionTable 58 SELECT @count ,'ITEM'+CONVERT( VARCHAR(6),@count),'>200 and <300' 59 SET @count =@count +1 60 END 61 62 SET @count =301 63 WHILE @count <=400 64 BEGIN 65 INSERT INTO dbo.testPartionTable 66 SELECT @count ,'ITEM'+CONVERT( VARCHAR(6),@count),'>300 and <400' 67 SET @count =@count +1 68 END 69 70 SET @count =401 71 WHILE @count <=500 72 BEGIN 73 INSERT INTO dbo.testPartionTable 74 SELECT @count ,'ITEM'+CONVERT( VARCHAR(6),@count),'>400 and <500' 75 SET @count =@count +1 76 END 77 78 79 SELECT * FROM dbo.testPartionTable 80 GO 81 82 83 --查看第三分区中所含记录 84 --$PARTITION系统函数用于为指定的分区函数返回分区号例如:$PARTITION.PartionByInt(ID)=3用于返回给定ID所处的分区号的分区数据 85 USE partionTest 86 GO 87 SELECT * FROM dbo.testPartionTable 88 WHERE $PARTITION.PartionByInt(ID)=3 89 GO 90 91 92 ----------------------------邹建大侠的分区表方案 计算列作为分区列----------------------------------------- 93 94 USE pratice 95 GO 96 -- 分区函数和架构 97 CREATE PARTITION FUNCTION PF_Year(DATETIME) 98 AS 99 RANGE LEFT FOR VALUES ( 100 N'2010', N'2011', N'2012' 101 ); 102 --负无穷-2010,2011-2011,2012-2012,2012-正无穷 103 104 CREATE PARTITION SCHEME PS_Year 105 AS 106 PARTITION PF_Year TO ( 107 [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY] 108 ) 109 GO 110 111 -- 创建表和计算列,并将计算列用做分区列 112 CREATE TABLE dbo.tb_test( 113 date datetime, 114 date_year as YEAR(date) PERSISTED -- PERSISTED 选项用于持久化存储 115 )ON PS_Year(date_year); 116 --YEAR(date) 里的date是第一列 date 117 118 CREATE CLUSTERED INDEX IXC_date_year ON dbo.tb_test(date_year) 119 --加聚集索引不是唯一索引,加索引只是使查询加快速度,可以不加 120 121 122 GO