`

oracle 删除大量数据后整理表(analyze table xxx compute statistics)

 
阅读更多
1. DELETE 后 TRUNCATE TABLE ;

然后重新分析一下
analyze table tablename compute statistics


查看表信息

select NUM_ROWS,BLOCKS,AVG_SPACE,AVG_ROW_LEN from user_tables where table_name=table_name;


2.Oracle 表删除大量数据后,即使表中只有几行记录,但用select count(*) from table 来查询发觉都不会马上出来,
原因是该表的空间大了,查询起来很慢。
解决的方法是把该表所占用的表空间缩小,或者说释放表空间。
alter table XXXX move; 这样处理后就释放了表空间了。
但是释放表空间后,表的行号rowid会发生变化,而基于rowid的索引则会变成无效。因此该操作后必须重建索引。
否则会 提示“ORA-01502: 索引'SMP.ITEMLOG_MID_IDX'或这类索引的分区处于不可用状态”
而重建索引的方法当然可以先drop掉再create ,但是这样太麻烦了,
用alter index XXX rebuild 这样最快了,不会改变原来的索引结构。


Oracle分析表简介
Oracle分析表是Oracle数据库管理的重要部分,下面就为您详细介绍Oracle分析表方面的知识,希望对您学习Oracle分析表方面能有所帮助。
  1、分析SQL
   
analyze table tablename compute statistics

    等同于 analyze table tablename compute statistics for table for all indexes for all columns
    for table的统计信息存在于视图:user_tables 、all_tables、dba_tables
    for all indexes的统计信息存在于视图: user_indexes 、all_indexes、dba_indexes
    for all columns的统计信息存在于试图:user_tab_columns、all_tab_columns、dba_tab_columns
    删除分析SQL:
   
analyze table tablename delete statistics 
会删除所有的statistics
    2、Oracle分析表的作用:为了使基于CBO的执行计划更加准确
    DBA_tables的数据有变化,可做对比。详见官方文档:
    Use the ANALYZE statement to collect non-optimizer statistics, for example, to:
    Collect or delete statistics about an index or index partition, table or table partition, index-organized
    table, cluster, or scalar object attribute.
    Validate the structure of an index or index partition, table or table partition, index-organized table,
    cluster, or object reference (REF)。
    Identify migrated and chained rows of a table or cluster.
    dbms_stats的作用主要是替代analyze的收集统计信息这一块的功能,且在这一方面做了相当大程度上的增强。
    以analyze table table_name compute statistics;这条为例,生成的统计信息会存在于user_tables这个视图,查看一下
   
select NUM_ROWS,BLOCKS,AVG_SPACE,AVG_ROW_LEN from user_tables where table_name=table_name;


观察一下NUM_ROWS,BLOCKS,AVG_SPACE,AVG_ROW_LEN几列你就会明白,这就是变化。

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Oracle表删除大量数据(千万)后查询变慢问题(原因分析)

    Oracle 表删除大量数据后查询变慢问题分析 在 Oracle 数据库中,如果删除了大量数据(千万级别),可能会出现查询变慢的问题。下面我们将分析这个问题的原因,并提供解决方案。 问题的原因主要有两个方面: 1. 表...

    Oracle 数据字典介绍

    SQL> analyze table emp compute statistics; SQL> select empty_blocks, blocks from user_tables where table_name = 'EMP'; ``` - **列信息**:通过`USER_TAB_COLUMNS`视图可以查询特定表的列信息。例如,要...

    数据库操作处理笔记

    - 数据表空间:用于存放普通数据表的数据。 ```sql create tablespace tablespace_name logging datafile '/XXX/xxx/datafile_name1.ora' size 4095M; ``` - 临时表空间:主要用于排序操作或临时对象的存储。 ...

    oracle数据库常用优化脚本

    SQL> analyze table table_name compute statistics; ``` **解释:** 此脚本用于更新指定表`table_name`的统计信息。通过定期执行该命令可以确保Oracle数据库能够基于最新的数据分布情况生成最优的执行计划,从而...

    oracle 索引不能使用深入解析

    COMPUTE STATISTICS FOR ALL INDEXES;`命令更新表和索引的统计信息,以帮助CBO做出更好的决策。当数据频繁变更时,保持统计信息的准确性尤为重要。 第八,关注索引的选择性。如果索引列的值分布不均匀,索引的选择...

    java面试800题

    SQL>:analyze table sale_contacts compute statistics; SQL>SELECT count(*) FROM sale_contacts WHERE UPPER(surname) = 'ELLISON'; Execution Plan -----------------------------------------------------...

Global site tag (gtag.js) - Google Analytics