SQL Server 2008中的行压缩浅析
2010-10-01 09:00:21 来源:WEB开发网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
-- Add 10,000 rows
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]
更多精彩
赞助商链接