dba_tables表中的一行为NUM_ROWS数值为何不与该表用SELECT COUNT(*)得到的行数同步?

gongfriend2 2009-05-28 07:49:03
dba_tables表中的一行为NUM_ROWS数值为何不与该表用SELECT COUNT(*)得到的行数一样?
如在dba_tables表中有一行table_name为gang,其相应字段num_ROWS数值为39326,但我用 select count(*) from gang得到的行数为39328行,按理说后者应该是对的,为何具体表中的行数与系统表中保存相应表的行数不同步?希各高手请指点.谢谢了.
...全文
1138 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
inthirties 2009-05-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 oraclelogan 的回复:]
引用楼主 gongfriend2 的帖子:

dba_tables表中的一行为NUM_ROWS数值为何不与该表用SELECT COUNT(*)得到的行数一样?
如在dba_tables表中有一行table_name为gang,其相应字段num_ROWS数值为39326,但我用 select count(*) from gang得到的行数为39328行,按理说后者应该是对的,为何具体表中的行数与系统表中保存相应表的行数不同步?希各高手请指点.谢谢了.



SQL code
SQL> conn system/system@orcl;
Connected to Oracle Databas…
[/Quote]


ttt 改为 TTT

同时,num_rows是用来表示row的行数的,不过需要对表做了统计才会准确,在10g中awr会自动收集信息,但是是有时间的,你可以手工收集statistic

SQL>exec dbms_stats.gather_table_stats(OWNNAME =>'username', TABNAME => 'tablename',METHOD_OPT => 'FOR ALL');

收集完以后你再检查,这时是一样的。


==================================================================
Inthirties关注Oracle数据库 维护 优化,安全,备份,恢复,迁移,故障处理

如果你需要帮助或想和我一起学习的请联系
联系方式QQ:370140387
QQ群: 85837884(注明:数据库)
电子邮件:dba@Inthirties.com
网站: http://www.inthirties.com


gongfriend2 2009-05-29
  • 打赏
  • 举报
回复
飞不起来的笨鸟:有没有什么其他办法来实现让它及时同步呢?请指教,我在研究一个软件它的每一步操作引起对哪几张表的操作,飞不起来的笨鸟谢谢了.
wangsong145 2009-05-29
  • 打赏
  • 举报
回复
dba_tables显示的表的记录数是对表进行分析以后才与表的真正记录数同步一次的
ruihuahan 2009-05-29
  • 打赏
  • 举报
回复
num_rows 是对表做 statistics analysis 后填充,表和索引的统计分析工作,在9i是要手工做的,10i是可以自动做的。但肯定要有延迟。
gongfriend2 2009-05-29
  • 打赏
  • 举报
回复
别哥,我今早再试看了一下,又同步的了,这是不是在对表增加记录后,对系统表dba_tables的记录不及时更新的?是不是在一定时间后才更新的呢?昨天看得一定是不一样的.这完全可肯定.
oraclelogan 2009-05-28
  • 打赏
  • 举报
回复
[Quote=引用楼主 gongfriend2 的帖子:]
dba_tables表中的一行为NUM_ROWS数值为何不与该表用SELECT COUNT(*)得到的行数一样?
如在dba_tables表中有一行table_name为gang,其相应字段num_ROWS数值为39326,但我用 select count(*) from gang得到的行数为39328行,按理说后者应该是对的,为何具体表中的行数与系统表中保存相应表的行数不同步?希各高手请指点.谢谢了.
[/Quote]


SQL> conn system/system@orcl;
Connected to Oracle Database 10g Enterprise Edition Release 10.1.0.2.0
Connected as system

SQL> select count(*) from system.ttt;

COUNT(*)
----------
210

SQL> select dt.num_rows from dba_tables dt where dt.table_name='ttt';

NUM_ROWS
----------


我的试验,跟你的论述完全不一样,我的是oracle 10.1.0.2.0
内容概要:本文围绕基于主从博弈的电热综合能源系统动态定价与能量管理展开研究,提出了一种结合博弈论与优化算法的综合能源系统管理框架。通过建立主从博弈模型,将能源供应商作为领导者、用户作为跟随者,实现动态电价制定与用户用能行为的互动优化,从而提升系统运行效率、降低能耗成本,并促进能源供需平衡。研究涵盖了电热耦合系统的建模、动态定价机制设计、用户需求响应建模及多目标优化求解过程,并借助Matlab实现算法仿真与结果验证,展示了该方法在提高能源利用率和用户经济性方面的有效性。; 适合人群:具备一定电力系统、优化理论及博弈论基础,从事综合能源系统、智能电网或能源管理研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于综合能源系统中的动态定价策略设计与能量协同优化管理;②服务于需求响应机制研究、电热耦合系统建模与仿真分析;③为科研工作者提供主从博弈在能源领域应用的Matlab代码实现范例,支撑论文复现与创新研究。; 阅读建议:建议读者结合Matlab代码深入理解模型构建与求解流程,重点关注博弈结构的设计逻辑与优化算法的实现细节,同时可拓展应用于多能互补园区、智慧楼宇等实际场景的仿真研究。

17,379

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧