国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

淺談SQL Server 2008中的行壓縮

2019-11-03 08:35:28
字體:
來源:轉載
供稿:網友
  在創建表或索引,或者修改表或索引時可以啟用行壓縮特性。壓縮可以基于行級、頁面級和備份級,本文將舉例說明如何創建一個具備行壓縮功能的表,以及修改一個表,使其具備行壓縮功能。

  首先創建一個未開啟行壓縮功能的表,使用下面的SQL語句往表里插入一些數據:

  

/****** Object: Table [dbo].[NoNComPRessed Table]   
Script Date: 05/27/2009 02:24:23 ******/   
IF EXISTS (SELECT * FROM sys.objects   
WHERE object_id = OBJECT_ID(N'[dbo].[NoNCompressed Table]')   
AND type in (N'U'))   
DROP TABLE [dbo].[NoNCompressed Table]   
GO   
CREATE TABLE [NoNCompressed Table]   
(id int, FName varchar(100), LName varchar(100))   
--增加10,000行   
declare @n int   
set @n=0  
while @n<=10000   
begin   
insert into [NoNCompressed Table] values   
(1,'Adam','Smith'),(2,'Maria','carter'),(3,'Walter','zenegger')   
set @n=@n+1   
end   
GO
  然后使用下面的SQL語句查詢這個表占用的空間大小:

  EXEC sp_spaceused [NONCompressed Table]

  返回結果:

name,rows,reserved,data,index_size,unused   
NoNCompressed Table,30003 ,968 KB,944 KB,8 KB,16 KB
  現在我們創建一個啟用了行壓縮的表,使用下面的SQL語句插入相同數量的數據:

/****** Object: Table [dbo].[Compressed Table]   
Script Date: 05/27/2009 02:24:57 ******/   
IF EXISTS (SELECT * FROM sys.objects   
WHERE object_id = OBJECT_ID(N'[dbo].[Compressed Table]')   
AND type in (N'U'))   
DROP TABLE [dbo].[Compressed Table]   
GO   
CREATE TABLE [Compressed Table]   
(id int, FName varchar(100), LName varchar(100)) with   
(Data_compression = ROW)   
declare @n int   
set @n=0  
--添加10,000行   
while @n<=10000   
begin   
insert into [Compressed Table] values   
(1,'Adam','Smith'),(2,'Maria','carter'),(3,'Walter','zenegger')   
set @n=@n+1   
end   
GO
  使用下面的SQL語句查詢表的空間占用情況:

  EXEC sp_spaceused [Compressed Table]

  返回結果:

  name,rows,reserved,data,index_size,unused

  Compressed Table,30003 ,584 KB,576 KB,8 KB,0 KB

  結果顯示壓縮表比非壓縮表占用的空間小得多。

  有一種情況是表中已經有很多數據,但現在需要進行壓縮,該怎么辦呢?在這種情況下,可以ALTER TABLE語句增加數據壓縮功能,我們創建另一個未啟用壓縮功能的表來模擬一下,使用下面的SQL語句添加數據到表中:

/****** Object: Table [dbo].[NoNCompressed Table] Script Date: 05/27/2009 02:24:23 ******/   
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[NoNCompressed Table2]') AND type in (N'U'))   
DROP TABLE [dbo].[NoNCompressed Table2]   
GO   
CREATE TABLE [NoNCompressed Table2]   
(id int, FName varchar(100), LName varchar(100))   
declare @n int   
set @n=0  
while @n<=10000   
begin   
insert into [NoNCompressed Table2] values   
(1,'Adam','Smith'),(2,'Maria','carter'),(3,'Walter','zenegger')   
set @n=@n+1   
end   
GO
  使用下面的SQL語句查詢該表占用的空間大小:

  EXEC sp_spaceused [NONCompressed Table2]

  返回結果:

name,rows,reserved,data,index_size,unused   
NoNCompressed Table,30003 ,968 KB,944 KB,8 KB,16 KB
  使用下面的ALTER TABLE語句啟用表的壓縮功能:

ALTER TABLE [NoNCompressed Table2]   
REBUILD WITH (DATA_COMPRESSION = ROW );
  然后使用下面的SQL語句查詢表的空間占用情況:

  EXEC sp_spaceused [NONCompressed Table2]

  返回結果:

  name,rows,reserved,data,index_size,unused

  NoNCompressed Table2,30003 ,592 KB,560 KB,8 KB,24 KB

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 樟树市| 黄冈市| 米林县| 阿坝县| 石城县| 闸北区| 成武县| 会昌县| 宝鸡市| 靖西县| 哈密市| 东山县| 酉阳| 六枝特区| 丹巴县| 托克逊县| 太原市| 静安区| 浦江县| 库伦旗| 丰宁| 射洪县| 宝清县| 平罗县| 南康市| 政和县| 固镇县| 石阡县| 九寨沟县| 五台县| 泰来县| 英吉沙县| 平定县| 仲巴县| 贡觉县| 西平县| 慈利县| 阿瓦提县| 五寨县| 五寨县| 固安县|