您好,欢迎访问一九零五行业门户网

SQL Server计算列是否占用空间

今天看网上有个问题: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
-- 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技术” 博客,请务必保留此出处
其它类似信息

推荐信息