oracle分析表有什么用

如题所述

第1个回答  2019-05-24
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来收集信息.
相似回答