请教SQL语句查询返回记录数的结果是否有什么不同?

要查询一个表的所有记录数,例子:方法一、declare@MyCountintselect@MyCount=count(*)from[表]查询结果@MyCount返回5万条... 要查询一个表的所有记录数, 例子:

方法一、
declare @MyCount int

select @MyCount=count(*) from [表]

查询结果 @MyCount 返回 5万条记录

方法二、
select * from [表]
set @MyCount=@@rowcount
查询结果 @MyCount 也是返回 5万条记录

请问这两种查询方法有什么不一样,如果不一样那它们的区别在哪里?会不会还有在什么情况下就不同呢?
展开
 我来答
a5202003
2012-03-24 · TA获得超过2249个赞
知道大有可为答主
回答量:1885
采纳率:75%
帮助的人:593万
展开全部
方法1:数据库会有一个内部的处理机制,当你直接查询表的记录条数的时候,直接使用内部机制快速返回给用户。

方法2:查询出整个表的所有数据,然后你只是取了其中一个非常微不足道的结果——条数。而查出来的数据全部被你抛弃了,做的无用功不说,还会占用CPU和大量内存,虽然查询后释放了内存,但是频繁的分配和释放内存是程序员最忌讳的。

区别显而易见,前者快,后者慢;前者资源消耗非常小,后者消耗巨大。如果没有别的需求,就用前者,后者绝对不可取。
frogley
2012-03-21 · TA获得超过1854个赞
知道小有建树答主
回答量:1008
采纳率:50%
帮助的人:1081万
展开全部
@@ROWCOUNT是全局变量,返回受上一语句影响的行数,任何不返回行的语句将这一变量设置为0。
因此一般情况下,只要能保证在select * 以后立刻select @@rowcount,两者的结果就是相等的。还是推荐用第一种,更简单,也更快(特别是对于大表)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
J_LD_P
2012-03-22 · TA获得超过109个赞
知道答主
回答量:103
采纳率:100%
帮助的人:42.9万
展开全部
第一种是计算机统计一下,把结果发给你,就一个数。
第二种是把整个表发给你,然后在告诉给了你多少行。浪费资源。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式