SQL Server计算列是否占用空间

简介:

今天看网上有个问题: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)%= 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


本文转自 lzf328 51CTO博客,原文链接:

http://blog.51cto.com/lzf328/1028769


相关文章
|
SQL 存储 大数据
Dataphin V5.0:支持创建异步调用API,实现慢 SQL 复杂计算的直连消费
本文介绍了数据服务产品中异步调用的应用场景与优势,包括大数据引擎查询、复杂SQL及大规模数据下载等场景,解决了同步调用可能导致的资源浪费和性能问题。通过创建异步API、测试发布以及权限申请等功能,实现高效稳定的服务提供。以电商订单查询为例,展示了如何利用异步调用提升系统性能与用户体验。
521 9
|
SQL 存储 缓存
SQL计算班级语文平均分:详细步骤与技巧
在数据库管理和分析中,经常需要计算某个班级在特定科目上的平均分
1038 5
|
SQL 存储 并行计算
Lindorm Ganos 一条 SQL 计算轨迹
Lindorm Ganos 针对轨迹距离计算场景提供了内置函数 ST_Length_Rows,结合原生时空二级索引和时空聚合计算下推技术,能够高效过滤数据并并行执行运算任务。该方案通过主键索引和时空索引快速过滤数据,并利用多Region并行计算轨迹点距离,适用于车联网等场景。具体步骤包括根据车辆识别代码和时间戳过滤数据、范围过滤轨迹点以及并行计算距离。使用限制包括只支持点类型列聚合运算及表中轨迹点需按顺序排列等。测试结果显示,Lindorm Ganos 在不同数据量下均能实现秒级响应。
288 3
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
1023 13
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
718 9
|
SQL 关系型数据库 数据库
数据库空间之谜:彻底解决RDS for SQL Server的空间难题
【8月更文挑战第16天】在管理阿里云RDS for SQL Server时,合理排查与解决空间问题是确保数据库性能稳定的关键。常见问题包括数据文件增长、日志文件膨胀及索引碎片累积。利用SQL Server的动态管理视图(DMV)可有效监测文件使用情况、日志空间及索引碎片化程度。例如,使用`sp_spaceused`检查文件使用量,`sys.dm_db_log_space_usage`监控日志空间,`sys.dm_db_index_physical_stats`识别索引碎片。同时,合理的备份策略和文件组设置也有助于优化空间使用,确保数据库高效运行。
473 2
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
418 6
|
SQL 存储 关系型数据库
mysql 数据库空间统计sql
mysql 数据库空间统计sql
378 0
|
SQL Oracle 关系型数据库
MySQL、SQL Server和Oracle数据库安装部署教程
数据库的安装部署教程因不同的数据库管理系统(DBMS)而异,以下将以MySQL、SQL Server和Oracle为例,分别概述其安装部署的基本步骤。请注意,由于软件版本和操作系统的不同,具体步骤可能会有所变化。
1523 3