>  기사  >  데이터 베이스  >  SQL Server计算列是否占用空间

SQL Server计算列是否占用空间

WBOY
WBOY원래의
2016-06-07 17:40:521131검색

今天看网上有个问题:SQLServer计算列是否占用空间其实这个问题查一下MSDN或者BOL就可以知道结果了。在创建计算列的时候有一个参数可以指定PERSISTED。使用这个

今天看网上有个问题:SQL Server计算列是否占用空间

 

其实这个问题查一下MSDN或者BOL就可以知道结果了 。在创建计算列的时候有一个参数可以指定PERSISTED。使用这个参数可以指定数据库引擎将在表中物理存储计算值,美国服务器,并在计算列依赖的任何其他列发生更新时对这些计算值进行更新。而且将计算列标记为 PERSISTED,便可对具有确定性、但不精确的计算列创建索引,美国空间,香港服务器,提高性能。


如果不使用PERSISTED参数,那么计算列不会占用磁盘空间,但是查询计算列的时候要计算出值,这样性能会受影响(空间换性能)。


这里我们测试一下:

 

USE tempdb

GO

-- CreateTable

CREATE TABLE UDFEffect(ID INT,

FirstName VARCHAR(100),

LastName VARCHAR(100))

GO

-- Insert OneHundred Thousand Records

INSERT INTO UDFEffect(ID,FirstName,LastName)

 BY a.name) RowID,

'Bob',

 BY a.name)%= 1 THEN 'Smith'

ELSE 'Brown' END

 a

 b

GO

-- Check thespace used by table

sp_spaceused 'UDFEffect'

GO

 

 

-- AddComputed Column

ALTER TABLE dbo.UDFEffect ADD

FullName LastName)

GO

-- Check thespace used by table

sp_spaceused 'UDFEffect'

GO


可以看到表大小并没有改变,数据页没有增长。

-- AddComputed Column PERSISTED

ALTER TABLE dbo.UDFEffect ADD

FullName_P LastName) PERSISTED

GO

-- Check thespace used by table

sp_spaceused 'UDFEffect'

GO


使用PERSISTED参数可以看到数据有增长。

-- Clean upDatabase

DROP TABLE UDFEffect

GO

本文出自 “关注SQL Server技术” 博客,请务必保留此出处

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.