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