如何对一个oracle11gsql语
如何对一个oracle11gsql语句进行统计分析
可以通过district来取出字段,之后通过count计算总数量。
sql:select count(district id) from tablename;
如果id字段没有空值的话,可以通过count统计字段的总数量(字段内容可能重复)。
sql:select count(id) from tablename;
如何在ORACLE系统中对表进行统计分析
begin
dbms_stats.gather_table_stats( ownname=>'XXXX',tabname => 'XXXX' ,ESTIMATE_PERCENT=>100,degree=>8, CASCADE=>true);
end;
只知道对Oracle数据库的单表做表分析语句是 analyze table 表名 compute statistics
全表还是全库啊?
全表的话,可以针对某个用户来分析:
SQL> exec dbms_stats.gather_schema_stats(ownname=>'scott',options=>'gather auto',estimate_percent=>dbms_stats.auto_sample_size,degree=>6); 具体的参数可以根据实际情况修改,也可以加其他的参数进来
全库的话,10g会自动分析的,但是也可以收到分析,统计分析要消耗大量资源,建议不要在业务繁忙时做:
SQL> exec dbms_stats.gather_system_stats('start'); 开始
SQL> exec dbms_stats.gather_system_stats('stop'); 结束
SQL> exec dbms_stats.gather_system_stats('interval',interval=>N); 一直工作N分钟
oracle分析表有什么用
Oracle中分析表的作用
1.分析更新表的统计信息,,有可能导致执行计划改变..
2.以的analyze table abc compute statistics;这条为例,生成的统计信息会存在于user_tables这个视图,查看一下select * from user_tables where table_name='ABC';
观察一下NUM_ROWS,BLOCKS,AVG_SPACE,AVG_ROW_LEN几列你就会明白,这就是变化。分析完表之后,会发现DBA_tables 视图中,以前很多列值是空的,现在开始有数据了。这些数据就是分析表得到的.
3.怎么样分析表或索引
命令行方式可以采用analyze命令
如Analyze table tablename compute statistics;
Analyze index|cluster indexname estimate statistics;
ANALYZE TABLE tablename COMPUTE STATISTICS
FOR TABLE
FOR ALL [LOCAL] INDEXES
FOR ALL [INDEXED] COLUMNS;
ANALYZE TABLE tablename DELETE STATISTICS
ANALYZE TABLE tablename VALIDATE REF UPDATE
ANALYZE TABLE tablename VALIDATE STRUCTURE
[CASCADE]|[INTO TableName]
ANALYZE TABLE tablename LIST CHAINED ROWS [INTO TableName]
等等。
如果想分析整个用户或数据库,还可以采用工具包,可以并行分析
Dbms_utility(8i以前的工具包)
Dbms_stats(8i以后提供的工具包)
如
dbms_stats.gather_schema_stats(User,estimate_percent=>100,cascade=> TRUE);
dbms_stats.gather_table_stats(User,TableName,degree => 4,cascade => true);
这是对命令与工具包的一些总结
(1)、对于分区表,建议使用DBMS_STATS,而不是使用Analyze语句。
a) 可以并行进行,对多个用户,多个Table
b) 可以得到整个分区表的数据和单个分区的数据。
c) 可以在不同级别上Compute Statistics:单个分区,子分区,全表,所有分区
d) 可以倒出统计信息
e) 可以用户自动收集统计信息
(2)、DBMS_STATS的缺点
a) 不能Validate Structure
b) 不能收集CHAINED ROWS, 不能收集CLUSTER TABLE的信息,这两个仍旧需要使用Analyze语句。
c) DBMS_STATS 默认不对索引进行Analyze,因为默认Cascade是False,需要手工指定为True
(3)、对于Oracle 9里面的External Table,Analyze不能使用,只能使用DBMS_STATS来收集信息.
oracle数据库 ,想统计一个用户下,所有表的记录的总条数,用什么语句可以实现?
analyze table table_name COMPUTE STATISTICS
对表分析后在使用
select count(^) from table_name
如果你的table_name 有主键 ID
select count(ID) from table_name 在统计的时候会用到主键索引
oracle日结统计,求大神帮忙分析一下统计SQL如何书写
表应该加上注释,要不没法写。
大概思路是这样的,首先统计出每一天每一个员工最晚一次的日结时间。这里分为两种情况,周5和其他日期需要分别判断。
然后将用户表和刚才的日结汇总表进行左连接,日结汇总表为空的部分就意味着该员工没有日结,外面套一层,count一下即可。
oracle为什么要搜集统计信息
alter system set events '10053 trace name context forever,level 2';
select * from scott.dept;
alter system set events '10053 trace name context off';
到$ORACLE_BASE/diag/rdbms/$ORACLE_SID/trace/ (11g路径)找一个叫 *ora*.trc (默认是这个)的文件,里面在生成执行计划的时候会用的下面的这个就是统计信息里面的信息
...
***************************************
BASE STATISTICAL INFORMATION
***********************
Table Stats::
Table: DEPT Alias: DEPT
#Rows: 4 #Blks: 5 AvgRowLen: 20.00 ChainCnt: 0.00
Index Stats::
Index: PK_DEPT Col#: 1
LVLS: 0 #LB: 1 #DK: 4 LB/K: 1.00 DB/K: 1.00 CLUF: 1.00
...
这个是表及索引的基础信息,生成执行计划时,通过一系列参数来计算成本,这就是CBO用获得最低成本的计划的依据之一 如果统计信息准确则可以生成较好的计划,如果统计信息不准确 生成的计划就不一定是最优的
怎么样停止oracle的统计分析
在sysdba下执行:
exec DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB');
就可以了。
oracle表分析命令dbms_stats分析表使用问题
主要收集如行数,列的distince、表段大小等等
如果做表关联查询,统计信息也会用到
一般要分析,不然统计信息不准可能走错执行计划,比如一个分区原先1行,插入后变几亿行,这时统计信息不准确的话可能就走错误执行计划了。
在oracle生产库中,我的一个表的数据有10亿行记录,怎么快速计算有多少行,不要告诉我用count(*)之类的答案
oracle 有个数据字典 表分析之后 会记录行数 貌似是 all_tables
如何对一个oracle11gsql语:等您坐沙发呢!