查出数据库中数据量较小的表

 答一、
最简单的办法可能是先分析数据库  
可以用全库分析,看你的数据库到底大不大,如果太大,全库分析就不是好办法。  
分析完后查询   dba_tables/user_tables即可

1.Analyze all tables
2.select sum(num_rows)  from dba_tables

select table_name,num_rows from user_tables;
但不是最新的
在某些特定条件下才是最新的
使用stat的包来更新
或者
ANALYZE TABLE 表名 COMPUTE STATISTICS;


num_rows就是行数啊!

答二、
执行下面的角本,生成c:/mytext.sql的文件,运行c:/mytext.sql文件中的内容,可以得到当前用户下的所有表及表中的记录数
Connect UserID/PSW@NETServerName
set feedback off
set heading off
spool c:/mytext.sql
select decode(rownum,1,'','union')||' select'||''''||table_name||''''||',count(*)from '||table_name from user_tables;
spool off

答三、
如果你的用户没有dba权限, 使用以下语句:
  EXECUTE   DBMS_UTILITY.ANALYZE_DATABASE('COMPUTE');  
  SELECT   OWNER,   TABLE_NAME,   NUM_ROWS   FROM   ALL_TABLES; 
如果你的用户没有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  

 

总:
下面的语句可以查出数据库中数据量较小的表:
SELECT * FROM (SELECT T.TABLE_NAME,SUM(NUM_ROWS) AS MYCOUNT  FROM USER_TABLES T GROUP BY T.TABLE_NAME)  WHERE MYCOUNT<100

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷月宫主

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值