sql如何最快地返回上千万的总记录数?

求助:SQL查询出的记录集中,要统计记录的总条数的好办法。要求速度和占有最少资源的方式。已经知道的方法有:1、selectcount(item)asnumfromtabl... 求助:
SQL查询出的记录集中,要统计记录的总条数的好办法。要求速度和占有最少资源的方式。
已经知道的方法有:
1、select count(item) as num from table
2、select item from table后,用recordset.recordcount
但是用这两个方法,在大量数据的时候,会出现速度很慢和占用大量CUP资源及内存的问题。就是要大量计算很慢。
有没人知道能够直接通过第一条记录和最后一条记录的记录条数差的办法来写的程序啊?
展开
 我来答
gyckey
2010-06-06 · TA获得超过122个赞
知道小有建树答主
回答量:83
采纳率:0%
帮助的人:114万
展开全部
第一种方法:select * from 表
select @@rowcount as '记录数' -----@@rowcount返回select * from 表 中数据行的数目.

第二种方法:1.在表中加一identity属性列,每增加一条记录,该列值自动加1

最后一条记录的identity属性列值就是总条数

2.最后查询表中最后一条记录的identity属性列的列值就可以知道总条数了.
语句为:
select top 1 identity属性列 from 表 order by identity属性列 desc
hy1397471
推荐于2016-06-20 · 知道合伙人软件行家
hy1397471
知道合伙人软件行家
采纳数:4714 获赞数:17154
15年数据库维护及数据库应用系统开发经验,从事零售业、服务业及财务管理类系统开发与维护。

向TA提问 私信TA
展开全部

两种情况:

1、表格的总记录数,使用系统表格sysindexes,sysobjects联合查询:

select rowcnt from sysindexes where 
id in (select id from sysobjects where name ='表格名称')
and status=0

2、检索结果的总记录数,使用 count()来计算:

select count(*) from table where id> 1000
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
华夏日长兴
2010-06-06 · TA获得超过9592个赞
知道大有可为答主
回答量:6305
采纳率:85%
帮助的人:3698万
展开全部
select count(*) as num from table
我公司的业务软件,用的是Oracle的数据库,我用以上语句查询一个四百多万行记录的表仅仅零点几秒,还不到一秒,没有你说的那样速度慢啊

在Sqlserver里边查询200多万行记录的表也是不到1秒,这个速度是完全可以满足要求的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dr_zxp
2010-06-06 · TA获得超过861个赞
知道小有建树答主
回答量:765
采纳率:100%
帮助的人:851万
展开全部
统计总数不涉及全表扫描,所以不会占用很多资源,你可以做个跟踪执行计划,对比分析资源占用的原因

数据库记录号是逻辑记录号的概念,通过记录号差的办法和第一种方法性能没有差异,因为最后一条号需要max(号)这样的方法得到
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
feixianxxx
2010-06-06 · TA获得超过2202个赞
知道大有可为答主
回答量:1273
采纳率:100%
帮助的人:1750万
展开全部
select rowcnt from sysindexes where id=object_id('表名')

应该快很多
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式