You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询SQL Server数据库中列的大小?求相关执行命令

在SQL Server中查看表各列大小的方法

当然可以,你可以通过动态SQL结合DATALENGTH()函数,直接计算每个列的实际存储空间,定位占用过大的列。

具体脚本

替换下面的YourTableName为目标表名后执行:

DECLARE @TableName NVARCHAR(128) = N'YourTableName';
DECLARE @SQL NVARCHAR(MAX) = N'';

SELECT @SQL += N'
SELECT 
    ''' + col.name + N''' AS 列名,
    ''' + typ.name + N''' AS 数据类型,
    ' + CAST(col.max_length AS NVARCHAR(10)) + N' AS 定义长度,
    SUM(DATALENGTH(' + QUOTENAME(col.name) + N')) AS 总占用字节数,
    AVG(DATALENGTH(' + QUOTENAME(col.name) + N')) AS 平均占用字节数
FROM ' + QUOTENAME(@TableName) + N'
UNION ALL'
FROM sys.columns col
JOIN sys.types typ ON col.system_type_id = typ.system_type_id
WHERE col.object_id = OBJECT_ID(@TableName);

SET @SQL = LEFT(@SQL, LEN(@SQL) - 10);
EXEC sp_executesql @SQL;

脚本说明

  • DATALENGTH()函数会返回列值实际占用的字节数,包括大对象类型(如VARCHAR(MAX)、XML)存储在LOB页中的数据
  • 结果会展示每个列的总占用字节数和平均占用字节数,帮你快速定位体积最大的列
  • 若表数据量极大,建议在业务低峰期执行,避免影响性能

内容的提问来源于stack exchange,提问作者João Vítor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 07:15:06