《收获,不止SQL优化》读书笔记 (8)

查询分区表失效的索引

select a.blevel, a.leaf_blocks, a.index_name, b.table_name, a.partition_name, a.status from user_ind_partitions a, user_indexes b where a.index_name = b.index_name and a.status = 'UNUSABLE';

分区表索引失效的操作

操作动作 操作命令 是否失效(全局索引) 如何避免(全局索引) 是否失效(分区索引) 如何避免(分区索引)
truncate分区   alter table part_tab_trunc truncate partition p1 ;   失效   alter table part_tab_trunc truncate partition p1 Update GLOBAL indexes;   没影响   N/A  
drop分区   alter table part_tab_drop drop partition p1;   失效   alter table part_tab_drop drop partition p1 Update GLOBAL indexes;   没影响   N/A  
split分区   alter table part_tab_split SPLIT PARTITION P_MAX at(30000) into (PARTITION p3,PARTITION P_MAX);   失效   alter table part_tab_split SPLIT PARTITION P_MAX at (30000) into (PARTITION p3,PARTITION P_MAX) update global indexes;   没影响   N/A  
add分区   alter table part_tab_add add PARTITION p6 values less than (60000);   没影响   N/A   没影响   N/A  
exchange分区   alter table part_tab_exch exchange partition p1 with table normal_tab including indexes;   失效   alter table part_tab_exch exchange partition p1 with table normal_tab including indexes update global indexes;   没影响   N/A  

全局临时表:全局临时表分为两种类型,一种是基于会话的全局临时表(on commit preserve rows);一种是基于事务的全局临时表(on commit delete rows)

create global temporary table [临时表名] on commit (preserve rows)|(delete rows) as select * from [数据表];

eg:

create global temporary table tmp on commit preserve rows as select * from dba_objects;

全局临时表特点:

一、高效删除记录;

二、不同会话访问临时表看到的会话是不同的

select * from v$mystat where rownum=1;

ps:基于事务的临时表在事务提交和会话连接退出时,临时表数据会被删除;基于会话的临时表就是在会话连接退出时,临时表数据被删除

索引组织表:

压缩技术

表压缩

ALTER TABLE t MOVE COMPRESS ;

索引压缩

create index idx2_object_union on t2 (owner , object_type , object_name ); ALTER index idx2_object_union rebuild COMPRESS ;

簇表:簇由一组共享多个数据块的多个表组成,它将这些表的相关行一起存储到相同数据块中,这样可以减少查询数据所需的磁盘读取量。新建簇之后,在簇中新建的表被称为簇表

ps:表结构设计时,最好存放什么数据就设计为什么类型,避免执行时类型转换,影响性能

Oracle索引知识

索引由根块(Root)、茎块(Branch)、叶子块(Leaf)组成,其中叶子块主要存储索引列具体值(Key Column Value)以及能定位到数据块具体位置的Rowid,茎块和根块主要保存对应下级对应索引

在这里插入图片描述

索引特性:

索引本身是有序的

索引本身能存储列值

注意:

仅等值无范围查询时,组合的顺序不影晌性能

drop table t purge; create table t as select * from dba objects; update t set object_id=rownum ; commit; create index idx_id_type on t(object_id, object_type) ; create index idx_type_id on t(object_type , object_id) ; set autotrace off; alter session set statistics_level=all ; select /*+index(t idx_id_type)*/ * from t where object_id=20 and object_type='TABLE'; select * from table(dbms_xplan.display cursor(null , null , 'allstats last')); select /*+index(t,idx_type id)*/ * from t where object_id=20 and object_type= 'TABLE'; select * from table(dbms_xplan.display cursor(null , null , 'allstats last'));

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxgdz.html