日期:2014-05-17  浏览次数:20441 次

求助 sql2000 sp4 给定任意一条select语句,快速得到该语句找到的记录数目是多少
一个老程序了,服务器用的是sql2000 sp4,其它情况如下


1客户端和服务器在异地,网速比较慢;
2客户端经常使用select语句向服务器查询大量数据;
3客户端提交的select语句服务器并不需要太多时间去处理,但是将查询到的数据结果传回给客户端需要大量时间(因为网速慢)
4这是一个搜索程序,用户在客户端界面上指定各种条件,程序根据这些条件生成对应的select语句发送给服务器

5如果在某次搜索中服务器返回了太多的记录,用户很可能需要进一步加强条件,做进一步的搜索,也就是说本次搜索的结果对于用户来说是无用的。

为了解决耗时太久的问题,我的设想是:服务器在执行完select语句后不要立刻返回所有结果给客户端,而是只告诉客户端找到了多少条数据,如果客户端觉得找到的数据太多就直接提示并要求用户进一步加强条件以便得到真正需要的结果;如果觉得数据量比较少,结果已经比较精确时就显示给用户查看。这样就可以减少无意义的大量数据传输。


综上所述,需求是给定任意一条select语句,快速得到该语句找到的记录数目是多少
ps:select语句中可能包含group by 等各种情况,貌似无法直接用select count的方式来达到目的

------解决方案--------------------
declare @sql varchar(3000)
set @sql='你的语句'
declare @sql1 varchar(3000)
set @sql1='select 记录数=count(*) from ('+@sql+')a'
exec(@sql1)