• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

SQL Server计算列是否占用空间

mysql 搞代码 4年前 (2022-01-09) 17次浏览 已收录 0个评论

今天看网上有个问题: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)%2 = 1 THEN ‘Smith’

ELSE ‘Brown’ END

a

b

GO

— Check thespace used by table

sp_spaceused ‘UDFEffect’

GO

— AddComput本文来源gaodai$ma#com搞$代*码网2ed 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技术” 博客,请务必保留此出处


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:SQL Server计算列是否占用空间

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址