Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何预测结果集行数?_Sql_Sql Server 2008_Throttling - Fatal编程技术网

Sql 如何预测结果集行数?

Sql 如何预测结果集行数?,sql,sql-server-2008,throttling,Sql,Sql Server 2008,Throttling,我有一个应用程序,其中我为SQLServer2008动态创建了一个大型SQL查询。此查询基于用户可能给出的各种搜索条件,如按lastname、firstname、ssn等进行搜索 要求是,如果用户给出一个条件,形成的查询可能会返回很多行(可配置为最大N行),那么应用程序必须向用户返回一条消息,说明他需要优化搜索查询,因为现有查询将返回太多行 我不想将5000行带回客户端,然后丢弃这些数据,只是为了向用户显示一个错误。解决此问题的有效方法是什么?为什么不只显示前N行和消息?将返回的行限制为N+1,

我有一个应用程序,其中我为SQLServer2008动态创建了一个大型SQL查询。此查询基于用户可能给出的各种搜索条件,如按lastname、firstname、ssn等进行搜索

要求是,如果用户给出一个条件,形成的查询可能会返回很多行(可配置为最大N行),那么应用程序必须向用户返回一条消息,说明他需要优化搜索查询,因为现有查询将返回太多行


我不想将5000行带回客户端,然后丢弃这些数据,只是为了向用户显示一个错误。解决此问题的有效方法是什么?

为什么不只显示前N行和消息?将返回的行限制为N+1,如果返回的行数大于N,则显示消息:)


如果您只想检查一个查询将返回多少行,那么
选择count(id)
(或某个列名)而不是
选择*

为什么不只显示前N行和消息?将返回的行限制为N+1,如果返回的行数大于N,则显示消息:)


如果您只想检查一个查询将返回多少行,那么
选择count(id)
(或某个列名)而不是
select*

,如果查询将返回太多行,则要求不向用户显示任何结果。进行计数的问题是,查询可能会因多个相交、并集等而变得庞大。。。。它从.NET发送到DB。因此,进行计数意味着我需要使用count发送完整查询一次,如果在限制范围内,则再次将查询发送到SQL。意味着需要双倍的带宽。还有其他想法吗?没有其他想法了。要么返回实际数据并使用它,要么首先返回计数,然后再次查询数据。您可以在存储过程中执行此操作,但如果计数小于N,它仍必须执行2次查询。但是,如果您将计数限制为N+1,那么至少您最多只能返回这么多数据,并且仍然能够满足您的要求。如果可能的话,我绝对建议显示N行和一条消息。如果查询返回的行太多,要求不向用户显示任何结果。进行计数的问题是,查询可能会因多个相交、并集等而变得庞大。。。。它从.NET发送到DB。因此,进行计数意味着我需要使用count发送完整查询一次,如果在限制范围内,则再次将查询发送到SQL。意味着需要双倍的带宽。还有其他想法吗?没有其他想法了。要么返回实际数据并使用它,要么首先返回计数,然后再次查询数据。您可以在存储过程中执行此操作,但如果计数小于N,它仍必须执行2次查询。但是,如果您将计数限制为N+1,那么至少您最多只能返回这么多数据,并且仍然能够满足您的要求。如果可能的话,我绝对建议显示N行和一条消息。