• SqlServer性能优化 通过压缩与计算列提高性能(十一)


     压缩:

       1.压缩的对象

            1.表   2.索引(非聚集索引手工做)   3.备份(手工做)

       2.对性能影响

            1.提高IO性能     2.降低CPU性能

     行压缩:

         1.对null值不占用空间

         2.对Numeric值不占用空间

    页压缩:

         1.行压缩

         2.前缀压缩

         3.字典压缩

       实例:

    准备表数据:

    select * from SalesOrderDetail
    
    select * into ComOrderDetail from SalesOrderDetail
    
    sp_spaceused 'ComOrderDetail'--data:4696k
    

     磁盘io:

    set statistics io on
     select * from ComOrderDetail  --0.57
    set statistics io off
    

     压缩:

    alter table ComOrderDetail rebuild partition=all
    	with(data_compression=page)
    

     压缩后表空间的使用情况:

    -- 表空间的使用情况	
    sp_spaceused 'ComOrderDetail'  --data:1376k
    

     

    对非聚集索引的压缩:

     持久化的计算列:

    create table computetable(c1 int,c2 int,c3 as (c1+c2)*50)
    	declare @n int
    	 set @n=1
    	 while @n<50000
    	 begin
    	 insert computetable values(@n,@n+1)
    	 set @n=@n+1
    	 end
    
    	 sp_spaceused 'computetable'  --data:1608 KB
    
    	 --cpu 的情况
    set statistics time on
     select * from computetable  --0.57
    set statistics time off
    

     

    	create table computetable(c1 int,c2 int,c3 as (c1+c2)*50 persisted)
    	declare @n	int
    	 set @n=1
    	 while @n<50000
    	 begin
    	 insert computetable values(@n,@n+1)
    	 set @n=@n+1
    	 end
    
    	 sp_spaceused 'computetable'  --data:1608 KB  1824kb
    
    	 --cpu 的情况
    set statistics time on
     select * from computetable  
    set statistics time off
    

     

          

  • 相关阅读:
    全局变量、函数、文件基本操作、冒泡排序
    元组,字符串,集合,文件操作
    Python使用小技巧
    pycharm
    postman和charles
    将博客搬至CSDN
    垃圾陷阱
    codevs 1139 观光公交
    1159 最大全0子矩阵
    NOI 193棋盘分割.cpp
  • 原文地址:https://www.cnblogs.com/sunliyuan/p/6248988.html
Copyright © 2020-2023  润新知