- 浏览: 1020187 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (529)
- 服务器 (8)
- jsp (1)
- java (6)
- AIX (1)
- solaris (3)
- linux学习 (53)
- javaScript (2)
- hibernate (1)
- 数据库 (74)
- sql语句 (8)
- oracle 学习 (75)
- oracle 案例 (42)
- oracle 管理 (42)
- Oracle RAC (27)
- oracle data guard (12)
- oracle 参数讲解 (14)
- Oracle 字符集 (8)
- oracle性能调优 (24)
- oracle备份与恢复 (12)
- oracle Tablespace (9)
- oracle性能诊断艺术 (1)
- oracle 11g学习 (5)
- oracle streams (1)
- oracle upgrade and downgrade (4)
- db2学习 (13)
- db2命令学习 (2)
- mysql (28)
- sql server (30)
- sql server 2008 (0)
- 工具 (10)
- 操作系统 (3)
- c++ (1)
- stock (1)
- 生活 (5)
- HADOOP (2)
最新评论
-
massjcy:
...
如何将ubuntu文件夹中文名改为英文 -
skypiea:
谢谢。。。
终于解决了。。。
Oracle 10.2.0.4(5)EM不能启动的解决方案(Patch 8350262) -
qwe_rt:
引用vi /etc/sysconfig/network 请问 ...
Linux操作系统下配置静态IP上网 -
liuqiang:
sudo killall -9 apache2
ps 和 kill 命令详解 -
dazuiba:
引用*绝杀 kill -9 PID 当使用此命令时,一定要通过 ...
ps 和 kill 命令详解
本文只涉及使用dbm_stats来收集或删除列的统计信息的一些命令,以备查询。
测试表如下(实验环境为10.2.0.4):
SQL> create table test(i int,a varchar2(30)); Table created. SQL> insert into test select rownum,object_name from all_objects; 9907 rows created.
简单的说,列的统计信息,主要包括两种类型:
- 只有基本信息:收集的统计信息只有1个桶(bucket)
- 包含柱状图信息:收集的统计信息包含2到254个桶
也就是说,如果想收集列的基本信息,同时不希望收集柱状图,则需要指定bucket的size为1:
SQL> exec dbms_stats.gather_table_stats(user, 'TEST', cascade=>false, method_opt=>'for columns i size 1'); PL/SQL procedure successfully completed. SQL> select column_name,num_distinct,num_buckets,low_value,high_value,density, avg_col_len,histogram 2 from user_tab_columns where table_name='TEST'; COLUMN_NAM DISTINCT BUCKETS LOW_VALUE HIGH_VALUE DENSITY AVG_COL_LEN HISTOGRAM ---------- -------- ------- ---------- ---------- ---------- ----------- ---------- I 9907 1 C102 C26408 .000100939 4 NONE A NONE
如果要收集列的柱状图信息,则bucket的个数必须大于等于2(最多不超过254)
SQL> exec dbms_stats.gather_table_stats(user, 'TEST', cascade=>false, method_opt=>'for columns i size 2'); PL/SQL procedure successfully completed. SQL> select column_name,num_distinct,num_buckets,low_value,high_value,density, avg_col_len,histogram 2 from user_tab_columns where table_name='TEST'; COLUMN DISTINCT BUCKETS LOW_VALUE HIGH_VALUE DENSITY AVG_COL_LEN HISTOGRAM ------ -------- ------- --------- ---------- ---------- ----------- --------------- I 9907 2 C102 C26408 .000100939 4 HEIGHT BALANCED A NONE
如果要删除列已有的柱状图信息而保留列的基本统计信息,则需要重新收集bucket为1的统计信息
SQL> exec dbms_stats.gather_table_stats(user, 'TEST', cascade=>false, method_opt=>'for columns i size 1'); PL/SQL procedure successfully completed. SQL> select column_name,num_distinct,num_buckets,low_value,high_value,density, avg_col_len,histogram 2 from user_tab_columns where table_name='TEST'; COLUMN DISTINCT BUCKETS LOW_VALUE HIGH_VALUE DENSITY AVG_COL_LEN HISTOGRAM ------ -------- ------- ---------- ---------- ---------- ----------- ---------- I 9907 1 C102 C26408 .000100939 4 NONE A NONE
这个操作明显不太合理,重新收集统计信息的代价有时候是很大的,所以Oracle11g对此做出了改进,允许只删除柱状图而保留基本统计信息,命令语法如下:
exec dbms_stats.delete_column_stats(user, 'TEST','I',col_stat_type=>'HISTOGRAM');
而要彻底删除整个列的统计信息,则需要调用delete_column_stats过程
SQL> exec dbms_stats.delete_column_stats(user, 'TEST', 'I'); PL/SQL procedure successfully completed. SQL> select column_name,num_distinct,num_buckets,low_value,high_value,density, avg_col_len,histogram 2 from user_tab_columns where table_name='TEST'; COLUMN DISTINCT BUCKETS LOW_VALUE HIGH_VALUE DENSITY AVG_COL_LEN HISTOGRAM ------ -------- ------- ---------- ---------- ------- ----------- ---------- I NONE A NONE
可以在同一个过程中收集多个列的统计信息,并且可以为不同的列指定不同的bucket个数:
SQL> exec dbms_stats.gather_table_stats(user, 'TEST', cascade=>false, method_opt => 'for columns size 1 T for columns size 2 A'); PL/SQL procedure successfully completed. SQL> select column_name,num_distinct,num_buckets,low_value,high_value,density, avg_col_len,histogram 2 from user_tab_columns where table_name='TEST'; COLUMN DISTINCT BUCKETS LOW_VALUE HIGH_VALUE DENSITY AVG_COL_LEN HISTOGRAM ------ -------- ------- --------- -------------------- ---------- ----------- --------------- I 9907 1 C102 C26408 .000100939 4 NONE A 7376 2 41 5F75746C245F6C6E635F .000185239 18 HEIGHT BALANCED 696E645F7061727473
值得注意的是,9i的dbms_stats中,method_opt的默认值是FOR ALL COLUMNS SIZE 1,也就是收集列的基本统计信息而不收集柱状图信息,而10g的默认值则变成了FOR ALL COLUMNS SIZE AUTO,则Oracle在收集列的基本信息之外,还会根据情况收集某些列的柱状图。
发表评论
-
sqlldr总结参数介绍
2012-06-28 14:29 22819有效的关键字: userid -- ORACLE use ... -
11gR2新特性:STANDBY_MAX_DATA_DELAY
2011-12-27 11:18 1210Active Data Guard 是 Oracle 11g ... -
Linux下用OCCI或OCI连接Oracle
2011-07-26 12:00 2899首先,去oracle官网下载C ... -
Oracle Mutex实现机制
2011-05-18 23:43 1064我们都知道Latch是Oracle ... -
local_listener参数作用
2011-05-10 17:19 1924pmon只会动态注册port等于1521的监听,否则 ... -
oracle伪列 rowid和rownum
2011-03-23 10:00 3532整理ROWID一 一,什么是伪列RowID?1,首先是一种数 ... -
Oracle10gR2 主备自动切换之客户端Failover配置
2011-01-20 10:32 9501. 主库检查和设置假设新增的服务名为ORCL_TAF.LK. ... -
Oracle10g配置Dataguard的相关参数解释
2011-01-20 10:24 1265参考自 http://space.itpub.ne ... -
wrap加密oracle包
2011-01-19 11:52 1297大家都知道oracle的很多系统包是没法看它的源码的,orac ... -
利用hcheck检查数据字典一致性状态
2011-01-17 17:42 1813利用hcheck可以检查oracle数据字典的一致性状态,主要 ... -
插入相同的数据量普通表和临时表产生的redo对比
2011-01-17 16:08 985往临时表里插入相同量 ... -
Database Link与GLOBAL_NAMES参数
2011-01-12 13:36 1028当GLOBAL_NAMES参数设置为TRUE时,使用DATAB ... -
Oracle Streams学习二(清除流配置)
2011-01-09 23:34 1179在完成streams部署之后,如果需要重新配置或舍弃配置,可以 ... -
red hat enterprise 下完全删除oracle 数据库
2011-01-05 01:28 1756步骤 1 以oracle用户登录主、备节点。步骤 2 ... -
Oracle常用dump命令
2010-12-20 00:31 831Oracle常用dump命令,记录一下备查。 一.M ... -
oracle执行DML(事物过程)的深入研究(二)
2010-12-14 15:02 1536接上一节的 oracle执行DML(事物过程)的深入研究(一) ... -
oracle执行DML(事物过程)的深入研究(一)
2010-12-14 10:26 2803用户所执行 DML (即执行事务)操作在 Oracle 内部按 ... -
Oracle基本数据类型存储格式研究(二)—数字类型
2010-12-14 00:35 1471数字类型包含number,intege ... -
Oracle基本数据类型存储格式研究(一)—字符类型
2010-12-13 23:32 11701.char char是定长字符型,内部代码是:96,最多可 ... -
关于oracle rowid的一些内容 -- 转载
2010-12-13 15:47 779本文讨论的是关于oracle ...
相关推荐
动态添加删除列和高级报表查询统计是一种先进的技术,它使得用户可以根据需求自定义报表结构,提高了数据处理的灵活性和效率。Flex是一款强大的富互联网应用程序(RIA)开发框架,特别适合创建交互式、数据驱动的...
### MySQL 查询根据列按条件...- 最后一个查询计算`t2`表中`列1`的数量,并将结果与其他统计信息一起显示,这里的`列2`、`列3`等为空字符串。 通过这种方式,我们可以灵活地组合不同的查询来满足复杂的数据统计需求。
统计信息是数据库管理系统用于优化查询计划的重要依据,包括表的行数、列的值分布情况以及索引的使用情况等。当这些统计信息与实际数据不匹配时,数据库可能无法做出最佳的查询决策,导致查询性能下降。 首先,我们...
2. **列统计信息 (Column statistics):** - **不同值的数量 (Number of distinct values (NDV)):** 列中不同的值的数量。 - **空值数量 (Number of nulls):** 列中为空的值的数量。 - **数据分布 (Histograms):**...
列统计 - **指标**:列中的唯一值数量(NUM_DISTINCT)、NULL值的数量(NUM_NULLS)以及数据分布(HISTOGRAM)。 - **存储位置**:这些信息存储在`DBA_TAB_COLUMNS`视图中。 - **作用**:帮助优化器估算使用特定列作为...
可以针对这些列单独收集统计信息,以确保数据库能够准确地评估过滤条件。 4. **调整采样比例**:默认的统计信息采样比例可能不适合所有情况。如果数据量特别大,全面扫描可能过于耗时,这时可以调整采样比例,找到...
收集统计信息的过程应当定期进行,尤其是在大量数据插入、更新或删除后,以确保优化器能够生成最优的执行计划。如果不这样做,可能会导致性能下降,因为优化器可能基于过时或不准确的统计信息做出决策。 在实际应用...
对于统计需求,可能还需要额外考虑是否设置一个“是否删除”字段,以便区分正常帖子和已被删除的帖子。 2. **统计逻辑实现**:同样地,通过SQL查询语句来获取已发表帖子的数量。这里的SQL语句可能类似于`SELECT ...
3. **更新统计信息**: 当数据发生变化时(例如,当用户添加、删除或修改行),需要实时更新统计栏的数据。这可以通过监听`DataGridView`的事件(如`CellValueChanged`、`RowAdded`、`RowRemoved`)来实现,一旦触发...
本项目"基于SQL的学生信息管理数据库查询删除"正是针对这个主题,通过源代码实现了一个高效、实用的信息管理系统。 首先,SQLQuery1.sql到SQLQuery7.sql这些文件很可能包含了不同的SQL查询和数据操作语句。每个文件...
例如,`FORALL COLUMNS SIZE REPEAT`表示对所有列重复收集统计信息,以适应列值分布的变化。 #### 六、示例代码 ```sql EXEC DBMS_STATS.GATHER_SCHEMA_STATS( OWNNAME => 'SCOTT', OPTIONS => 'GATHERAUTO', ...
在动态报表中,我们可能需要在运行时根据数据源的变化调整列标题,例如添加、删除或重命名。 2. **运行统计**:在报表中进行运行时统计是一种常见的需求,例如计算某列的总和、平均值、最大值或最小值。水晶报表...
在这个场景中,我们将深入探讨如何使用TableLayout动态添加和删除行,以及如何实现数据的统计。 1. **动态添加和删除行** 在TableLayout中,每一行是由TableRow对象构成的。要动态添加行,首先需要创建一个新的...
实现某部门职工信息管理。职工信息包括:职工号、姓名、性别、年龄...6、统计功能:对文件中某关键字的相关记录内容信息进行统计(比如人数.工资等),7、排序:根据给定字段,对记录进行排序,例如:按工资的高低排序
该系统提供了丰富的功能,包括学生信息的录入、查找、修改、删除,以及成绩排名、学生人数统计和显示所有学生信息等操作。下面将对这些功能进行详细的解释和探讨。 首先,`StudentStem.py`是主程序文件,它包含了...
Oracle数据库维护是确保数据库高效运行的关键任务,其中统计信息的收集和管理扮演着核心角色。统计信息对SQL语句的性能至关重要,因为优化器依赖这些信息来制定执行计划。优化器利用统计信息评估多种执行策略并选择...
- 修改了表结构(如添加、删除列) - 数据分布发生了显著变化 - 系统升级到新版本 此外,建议定期进行统计信息的收集,例如每晚或每周一次,以确保统计信息始终反映当前的数据状态。 #### 确保统计信息的质量 ...
列统计信息则包含了不同值的数量、最大值和最小值、NULL值的数量以及平均列长度。索引统计信息则关注索引深度、不同键值数量和聚合因子等。此外,索引相关的统计信息如引用现有行和被删除行的索引数也是重要的参考。...
《长沙理工大学信息统计服务系统》是一个专为高校设计的数据管理和统计平台,旨在提高统计数据的收集、处理和查询效率,实现无纸化办公,减少人力成本,确保数据的准确性和及时性。该系统的设计和功能主要涵盖了以下...