当前位置:Gxlcms > 数据库问题 > SQL Server 2014 聚集列存储

SQL Server 2014 聚集列存储

时间:2021-07-01 10:21:17 帮助过:23人阅读

TABLE maxiangqian( id [int] NOT NULL, age [int] NOT NULL, sex [tinyint] NOT NULL, name varchar(20)); GO CREATE CLUSTERED COLUMNSTORE INDEX cci_Simple ON maxiangqian; GO :

2:行聚集索引转换为列存储:

CREATE TABLE maxiangqian( 
id [int] NOT NULL, 
age [int] NOT NULL, 
sex [tinyint] NOT NULL, 
name varchar(20)); 
GO 
CREATE CLUSTERED INDEX cl_simple ON maxiangqian (id); 
GO 
CREATE CLUSTERED COLUMNSTORE INDEX cl_simple ON maxiangqian 
WITH (DROP_EXISTING = ON);

或者说我们也可以直接删除聚集索引,然后再

CREATE CLUSTERED COLUMNSTORE INDEX cl_simple ON maxiangqian 

效果是一样一样的。

3 将一个堆表转化为列存储表:

第一步就是删除堆表现有的索引,然后创建聚集列存储索引:

CREATE TABLE maxiangqian(  
    id [int] NOT NULL,   
    age [int] NOT NULL,   
    sex [tinyint] NOT NULL,   
    name varchar(20));  
GO  
create index pid on maxiagnqian(id)

drop index pid on maxiangqian 

CREATE CLUSTERED COLUMNSTORE INDEX cci_Simple ON maxiangqian;  
GO  :

上面基本上已经满足你建立列存储的一些功能,下面我们看一下怎么把一个聚集列存储的表转化为普通表:

CREATE CLUSTERED INDEX pid   ON maxiangqian  
WITH ( DROP EXISTING = ON );  
或者
DROP INDEX cci_Simple   ON MyFactTable; 

OK,我们基本上已经可以知道怎么创建列存储索引了

但是我们指导由于列存储删除的时候只是标记,所以说列存储如果经常更新删除,碎片还是会很大的,下面我们看下怎么消除碎片---重建:

CREATE CLUSTERED COLUMNSTORE INDEX cci_Simple   ON maxiagnqian  
WITH ( DROP_EXISTING = ON );  


ALTER INDEX   cci_Simple ON maxiangqian REBUILD PARTITION = ALL  
WITH ( DROP_EXISTING = ON );  

以上两种方式是都可以实现的。

其实对于列存储来说,卧铺,我这边给我比较大的惊喜就是磁盘空间的节约,列存储的压缩比例可以达到10:1甚至15:1,而且相对来说对于我数据仓库一些大批量的聚合操作性能提升。在节省空间又提高性能的情况下,你还有什么理由不选用列存储呢。

 

SQL Server 2014 聚集列存储

标签:uil   lte   cci   b-tree   drop   dex   升级   提升   维护   

人气教程排行