获取SQL查询返回的数据大小

时间:2015-09-02 16:29:07

标签: sql sql-server

我有一个要求,我们需要根据数据的大小限制SQL查询返回的记录数。存储过程中有多个select语句。有没有办法知道查询可能返回的数据的总大小。我知道我们在管理工作室中有包含客户统计选项,但我想知道我们是否可以在运行时获取此信息。

TIA, 阿米特

3 个答案:

答案 0 :(得分:0)

这有点宽泛,我理解下来的选票!

但是,我建议使用" count"计算返回的行数。您需要修改查询/过程以添加此逻辑,使用计数执行查询,检查返回的行数,然后确定是否要继续。

select count(*) from library_books where loaned_out='Y';

count(*)
--------
     563

答案 1 :(得分:0)

最好的建议是计算每行的平均大小。这也意味着计算每个字段的平均大小。

然后将结果限制为

RowAvgSize * Count(*) < YourSizeLimit

OR

SELECT *
FROM table
LIMIT ( YourSizeLimit / RowAvgSize ) ::integer

答案 2 :(得分:0)

这是一项奇怪的要求......如果不了解需求的依据,很难提出建议。似乎限制结果的最佳方法是使用SELECT TOP返回固定数量的行或百分比。

如果您确实需要进行一些计算,可以将结果输出到临时表,然后进行计算以确定要返回的行数。类似的东西:

select *
into #temp
from MyBigQueryHere

declare @Rows as integer
set @Rows = @@ROWCOUNT

--insert calculation to modify value of @Rows here
set @Rows = sqrt(@Rows) --example

select top(@Rows) *
from #temp