sql如何最快地返回上千万的总记录数?
求助:SQL查询出的记录集中,要统计记录的总条数的好办法。要求速度和占有最少资源的方式。已经知道的方法有:1、selectcount(item)asnumfromtabl...
求助:
SQL查询出的记录集中,要统计记录的总条数的好办法。要求速度和占有最少资源的方式。
已经知道的方法有:
1、select count(item) as num from table
2、select item from table后,用recordset.recordcount
但是用这两个方法,在大量数据的时候,会出现速度很慢和占用大量CUP资源及内存的问题。就是要大量计算很慢。
有没人知道能够直接通过第一条记录和最后一条记录的记录条数差的办法来写的程序啊? 展开
SQL查询出的记录集中,要统计记录的总条数的好办法。要求速度和占有最少资源的方式。
已经知道的方法有:
1、select count(item) as num from table
2、select item from table后,用recordset.recordcount
但是用这两个方法,在大量数据的时候,会出现速度很慢和占用大量CUP资源及内存的问题。就是要大量计算很慢。
有没人知道能够直接通过第一条记录和最后一条记录的记录条数差的办法来写的程序啊? 展开
7个回答
展开全部
第一种方法:select * from 表
select @@rowcount as '记录数' -----@@rowcount返回select * from 表 中数据行的数目.
第二种方法:1.在表中加一identity属性列,每增加一条记录,该列值自动加1
最后一条记录的identity属性列值就是总条数
2.最后查询表中最后一条记录的identity属性列的列值就可以知道总条数了.
语句为:
select top 1 identity属性列 from 表 order by identity属性列 desc
select @@rowcount as '记录数' -----@@rowcount返回select * from 表 中数据行的数目.
第二种方法:1.在表中加一identity属性列,每增加一条记录,该列值自动加1
最后一条记录的identity属性列值就是总条数
2.最后查询表中最后一条记录的identity属性列的列值就可以知道总条数了.
语句为:
select top 1 identity属性列 from 表 order by identity属性列 desc
推荐于2016-06-20 · 知道合伙人软件行家
关注
展开全部
两种情况:
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select count(*) as num from table
我公司的业务软件,用的是Oracle的数据库,我用以上语句查询一个四百多万行记录的表仅仅零点几秒,还不到一秒,没有你说的那样速度慢啊
在Sqlserver里边查询200多万行记录的表也是不到1秒,这个速度是完全可以满足要求的
我公司的业务软件,用的是Oracle的数据库,我用以上语句查询一个四百多万行记录的表仅仅零点几秒,还不到一秒,没有你说的那样速度慢啊
在Sqlserver里边查询200多万行记录的表也是不到1秒,这个速度是完全可以满足要求的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
统计总数不涉及全表扫描,所以不会占用很多资源,你可以做个跟踪执行计划,对比分析资源占用的原因
数据库记录号是逻辑记录号的概念,通过记录号差的办法和第一种方法性能没有差异,因为最后一条号需要max(号)这样的方法得到
数据库记录号是逻辑记录号的概念,通过记录号差的办法和第一种方法性能没有差异,因为最后一条号需要max(号)这样的方法得到
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select rowcnt from sysindexes where id=object_id('表名')
应该快很多
应该快很多
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询