`
jiaoronggui
  • 浏览: 1328523 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
博客专栏
B7c2eb31-a8ea-3973-a517-d00141f39b89
项目管理软件-redmin...
浏览量:116447
4a63e153-250f-30f6-a051-97cfc67cb3d3
IT职业规划
浏览量:199342
社区版块
存档分类
最新评论

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

阅读更多

数据库版本:Oracle 10G

 

今天查询下数据库中一个表的具体记录数,使用

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);

 

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

 

 

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

执行完毕之后,发现last_analyzed变成了刚才执行 dbms_stats时间

 

不同统计方式导致分区表的统计信息不同

Oracle — 作者 pingshx @ 15:47

问题的起因:最近发现一张分区表:从dba_table得到的统计信息跟 dba_tab_stats/dba_tab_partitions查得的信息出入很大,后来查得的原因是: 脚本里调用dbms_ddl来收集统计信息,而dbms_ddl实际上是调用analyze命令,analyze基本上不会用来收集统计信息了。我们通常是调用dbms_stats来统计的。

 

即使数据量出现大的变动,analyze也不会反映到dba_tables,这就再次说明用analyze来收集统计信息是存在问题的,正当途径还是用dbms_stats来收集。这个脚本也不知是哪位大佬写的。

 

 

http://pingshx.itpub.net/post/39434/497343

1
0
分享到:
评论

相关推荐

    Oracle数据访问 获取记录总数

    例如,要获取表中所有记录的总数,可以创建一个CRecordset子类,重写Open函数并执行SQL COUNT(*)语句: ```cpp class CRecordCountSet : public CRecordset { public: CRecordCountSet(CDatabase* pDatabase); ...

    oracle数据库开发面试必备

    - `TRUNCATE`命令快速删除表中的所有数据,它不触发任何删除触发器,也不记录删除动作,因此执行速度快,但无法回滚。 - `DELETE`命令逐条删除记录,并记录每一条删除记录的动作,支持事务控制和触发器,但执行...

    Oracle数据库操作命令集合

    ### Oracle数据库操作命令详解 #### 一、SQLPlus启动与用户连接 - **启动SQLPlus:** - 在DOS环境下通过`sqlplus 用户名/密码 as sysdba`来启动SQLPlus并登录到Oracle数据库。例如,登录系统账户时可使用`c:>...

    Oracle数据库基本查询知识

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统之一,由甲骨文公司开发和维护。它提供了丰富的功能,包括数据存储、管理和检索,适用于各种规模的企业和组织。本篇将深入探讨Oracle数据库的基本查询知识,...

    Oracle数据库命令(PPT)

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,尤其在企业级应用中占据重要地位。对于初学者来说,掌握Oracle数据库的基础命令是学习的关键步骤。以下将详细介绍Oracle数据库的一些常用命令,帮助你快速...

    分页显示Oracle数据库记录的PHP类

    在本文中,我们将深入探讨如何使用PHP与Oracle数据库进行交互,特别是实现分页显示数据的功能。首先,我们有一个名为`ora_sql`的PHP类,该类封装了与Oracle数据库的基本操作,包括连接、执行SQL语句以及获取查询结果...

    东软oracle在线期中考试一.docx

    COUNT 函数是 Oracle 数据库中的一个聚集函数,用于计算表中的行数。例如,使用 COUNT 函数可以计算雇员表中的行数。 知识点十:组函数 组函数是 Oracle 数据库中的一个函数,用于对数据进行分组操作。例如,使用 ...

    Oracle数据库-PL、SQL使用方法整理[参考].pdf

    使用`row_count`变量可以获取当前操作影响的记录行数。例如,`row_count:=:system.trigger_record;`会将触发器操作影响的记录数赋值给`row_count`。 2. **设置鼠标状态**: `set_application_property('cursor_...

    SQL和Oracle数据库函数说明

    例如,你可以用`SELECT COUNT(*) FROM table`统计表中的记录数,`SELECT MAX(column) FROM table`找出某列的最大值,或者使用`SELECT column1 || ' ' || column2 FROM table`将两列数据连接成一个字符串。...

    oracle数据库1-5

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,尤其在企业级应用中占据重要地位。Java软件工程师在开发过程中,往往需要与数据库进行交互,因此掌握Oracle数据库的基本操作和高级技术至关重要。以下是对...

    [数据库] Oracle单表查询总数及百分比和数据横向纵向连接1

    在Oracle数据库中,单表查询和数据连接是日常数据分析和报表生成的重要操作。本文主要讨论了如何统计单表中的字段总数、百分比以及如何进行数据的横向和纵向连接。 首先,我们关注如何在单表中统计某个字段的总数...

    Oracle数据库所有查询命令[借鉴].pdf

    ` 可以获取表中的所有数据,`SELECT column1, column2 FROM table;` 则只选择指定列。 3. 限定返回的行:通过`LIMIT`(在某些数据库系统中)或`ROWNUM`(在Oracle中)限制返回结果的数量。例如,`SELECT * FROM ...

    oracle数据库常用优化脚本

    本文档将详细介绍Oracle数据库中用于日常运维优化的一些常用脚本,包括但不限于统计信息更新、SQL查询性能分析以及系统资源监控等方面。 #### 二、更新统计信息 **脚本:** ```sql SQL> analyze table table_name ...

    oracle不走索引可能原因.docx

    Oracle数据库在执行SQL查询时,有时会选择不使用已经创建的索引,这可能是由于多种因素导致的。以下是一些常见的原因及其详细解释: 1. **INDEX SKIP SCAN**: 当创建了一个组合索引,但是查询只使用了索引的非第一...

    Oracle数据库Sql性能调优

    ### Oracle数据库SQL性能调优详解 #### 一、选用适合的ORACLE优化器 ORACLE提供了三种优化器供用户选择: 1. **基于规则的优化器(RULE)**:这是一种较为传统的优化方式,它依赖于预定义的规则来确定SQL语句的...

    Oracle数据库分组查询练习题(包答案)

    根据提供的信息,我们可以详细解析与Oracle数据库分组查询相关的知识点,并通过具体的练习题目来加深理解。下面将逐一分析每一个题目中的关键知识点。 ### Oracle数据库分组查询知识点详解 #### 1. 查询部门20的...

Global site tag (gtag.js) - Google Analytics