如何快速的获取oracle数据库中表中记录行数,不使用select count(1)方式

本文介绍了一种在Oracle数据库中快速查询表记录数的方法,通过利用tabs表中的num_rows字段来替代传统的SELECT COUNT(*)查询,同时提供了刷新统计数据以确保准确性的方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天查询下数据库中一个表的具体记录数,使用
select count(1) from [tablename],执行起来速度非常慢,所以想看看是否有更好的办法,发现,在tabs表已经存在了该表记录数据了,直接运行如下sql就可以了

select TABLE_NAME, CC.num_rows, CC.last_analyzed
from tabs CC



经过查询资料发现,从tabs表中获取的数据不是非常准确,在tabs表中存在一个字段last_analyzed,有最后分析的日期,好像都不是最新,可能导致数据不是非常准确,可以通过在command下面执行EXEC dbms_stats.gather_table_stats('【空间名称】','【tablename】',cascade=>true);,可以刷新tabs表中的num_rows列,以及最后更新时间


Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0
Connected as rep_hea

SQL> EXEC dbms_stats.gather_table_stats('【username】','【tablename】',cascade=>true);

--单个表统计数据的统计数据更新

PL/SQL procedure successfully completed

SQL> EXEC dbms_stats.gather_schema_stats('【username】',estimate_percent=>100,cascade=> TRUE);

--更新整个用户所有表的统计数据更新

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值