重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
SQL Server中怎么计算列是否占用空间,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于做网站、成都网站设计、弥渡网络推广、小程序开发、弥渡网络营销、弥渡企业策划、弥渡品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联为所有大学生创业者提供弥渡建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com
今天看网上有个问题: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)
SELECT TOP 100000 ROW_NUMBER() OVER (ORDER BY a.name) RowID,
'Bob',
CASE WHEN ROW_NUMBER() OVER (ORDER BY a.name)%2 = 1 THEN 'Smith'
ELSE 'Brown' END
FROM sys.all_objects a
CROSS JOIN sys.all_objects b
GO
-- Check thespace used by table
sp_spaceused 'UDFEffect'
GO
-- AddComputed Column
ALTER TABLE dbo.UDFEffect ADD
FullName AS (FirstName+' '+LastName)
GO
-- Check thespace used by table
sp_spaceused 'UDFEffect'
GO
可以看到表大小并没有改变,数据页没有增长。
-- AddComputed Column PERSISTED
ALTER TABLE dbo.UDFEffect ADD
FullName_P AS (FirstName+' '+LastName) PERSISTED
GO
-- Check thespace used by table
sp_spaceused 'UDFEffect'
GO
使用PERSISTED参数可以看到数据有增长。
-- Clean upDatabase
DROP TABLE UDFEffect
GO
看完上述内容,你们掌握SQL Server中怎么计算列是否占用空间的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!