如何查询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
相关产品推荐
相关产品推荐

