请问在ORACLE中怎么实现获得一个库中的所有表中的全部记录数?

本文介绍如何在不具有DBA权限的情况下,通过SQL查询查看指定用户的数据库中所有表的记录数量,提供了两种高效的方法,并讨论了在大数据量场景下优化统计的策略。

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

如果你的用户没有dba权限, 并且只想查看本用户的所有表的记录数(注意: 不是你说的"库中的所有表"), 改为:

EXECUTE DBMS_UTILITY.ANALYZE_SCHEMA('MYUSERNAME', 'COMPUTE');
SELECT OWNER, TABLE_NAME, NUM_ROWS FROM USER_TABLES;

注意: MYUSERNAME是你的用户名, 用大写.

之所以不把它做成一个函数, 是因为在数据量大时, ANALYZE是个很耗时的工作. 如果不是必须要求精确数字, 第二次及以后的统计可以使用前面的ANALYZE结果.


另一种方法:

SET ECHO OFF
SET HEAD OFF
SET LINESIZE 200
SET PAGESIZE 0
select 'SELECT ''' || TNAME || ''' TABNAME, COUNT(1) FROM ' || TNAME || ';' FROM TAB;
SPOOL C:\COUNTALL.SQL
/
SPOOL OFF

然后执行生成的COUNTALL.SQL
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值