方法1:数据库会有一个内部的处理机制,当你直接查询表的记录条数的时候,直接使用内部机制快速返回给用户。
方法2:查询出整个表的所有数据,然后你只是取了其中一个非常微不足道的结果——条数。而查出来的数据全部被你抛弃了,做的无用功不说,还会占用CPU和大量内存,虽然查询后释放了内存,但是频繁的分配和释放内存是程序员最忌讳的。
区别显而易见,前者快,后者慢;前者资源消耗非常小,后者消耗巨大。如果没有别的需求,就用前者,后者绝对不可取。
@@ROWCOUNT是全局变量,返回受上一语句影响的行数,任何不返回行的语句将这一变量设置为0。
因此一般情况下,只要能保证在select * 以后立刻select @@rowcount,两者的结果就是相等的。还是推荐用第一种,更简单,也更快(特别是对于大表)
第一种是计算机统计一下,把结果发给你,就一个数。
第二种是把整个表发给你,然后在告诉给了你多少行。浪费资源。