如何获取SQL查询返回的表的大小(以字节为单位)?

Mat*_*att 6 sql-server

如何获取SSM中SQL查询返回的表的大小(以字节为单位)?

Pro*_*ofK 9

您是在寻找表格的大小,还是表格中一行的大小?如果你的所有列都是固定大小的,即nchar而不是nvarchar等,后者只能随时使用.

对于var size columns,您可以使用每列的最大长度,并将它们相加,以获得最大行大小,但这实际上不能准确反映您的实际行大小.

select sum(max_length)
from sys.columns
where object_id = object_id('MyTable')
Run Code Online (Sandbox Code Playgroud)

您还可以创建一个查询,为任何特定行中的每个列返回DATALENGTH,以获得仅该行的总大小.

  • ...或者您可以使用`sys.dm_db_index_physical_stats`为这些指标获取更准确的值:http://msdn.microsoft.com/en-us/library/ms188917.aspx (3认同)

Rem*_*anu 6

SQL查询不返回表,它们返回结果.没有API来确定结果的大小,因为结果具有语义,您开始读取结果直到结束,并且您无法预先知道大小.预先发送大小将要求服务器首先获取结果,将其存储在某处,确定其大小(行数),然后发送大小后跟结果.显然,这是低效的并且完全不合需要.最好在没有必要中间存储结果的情况下尽快开始流式传输结果.

也许你正在寻找别的东西?

数据库中表的大小始终可以从其页数确定,请参阅sys.allocation_units.帮助程序sp_spaceused可以为您读取和格式化此信息.