如何获取SSM中SQL查询返回的表的大小(以字节为单位)?
答案 0 :(得分:9)
您是在寻找表格的大小,还是表格中一行的大小?如果您的所有列都是固定大小的,即nchar而不是nvarchar等,则后者才可用。
使用var size columns,您可以使用每列的最大长度,并将它们相加,以获得最大行大小,但这实际上无法准确反映您的实际行大小。
select sum(max_length)
from sys.columns
where object_id = object_id('MyTable')
您还可以为任何特定行中的每一列创建一个返回DATALENGTH的查询,以获得该行的总大小。
答案 1 :(得分:6)
SQL查询不返回表,它们返回结果。没有API来确定结果的大小,因为结果具有流式语义,您开始读取结果直到结束,并且您无法预先知道大小。预先发送大小将要求服务器首先获取结果,将其存储在某处,确定其大小(行数),然后发送大小后跟结果。显然,这是低效的并且完全不合需要。最好尽快开始流式传输结果,而不必在中间存储它。
也许你正在寻找别的东西?
数据库中表格的大小始终可以根据其页数来确定,请参阅sys.allocation_units
。帮助程序sp_spaceused
可以为您读取和格式化此信息。
答案 2 :(得分:2)
仅在SSMS中,您可以从其中一个菜单“包含客户端统计信息”中提供一些信息
否则,根据Remus的回答