Oracle索引小结
来源:互联网 发布:php abstract class 编辑:程序博客网 时间:2024/05/29 16:16
A,索引特点
索引的三大特点 1,索引树的高度一般都比较低; 2,索引由索引列存储的值及Rowid组成; 3,索引本身是有序的索引查询--用户索引字典Select index_name, blevel,--索引树所在层数 leaf_blocks,--Leaf(叶子块)的数目 num_rows, distinct_keys, clustering_factor From user_ind_statistics;
B,索引分析
select status,T.* from user_indexes T where table_name='TABLE1'SQL> Analyze index XTM12_P validate structure;Index analyzedSQL> select height,DEL_LF_ROWS/LF_ROWS from index_stats; HEIGHT DEL_LF_ROWS/LF_ROWS---------- ------------------- 2 0--当 查询出来的 height>=4 或者 DEL_LF_ROWS/LF_ROWS>0.2 的场合 , 该索引考虑重建 SQL>alter index indexname rebuild; SQL>alter index indexname rebuild online; --联机索引重建 ,所有用户都不会用到索引时重建
C,索引失效
1、条件字段选择性弱,查出的结果集较大,不走索引;强制索引:/*+INDEX(表名,索引名字)*/ 的方法,但是这种方法有个缺点,如果索引的名字改变了,就会导致程序重新改动,大大增加维护成本。 索引提示还可以使用列的方法进行,语法是/*+INDEX(表名,(索引列的列表))*/,这种方法即使索引的名字变了,也不会导致程序重新改动
2、where条件等号两边字段类型不同,不走索引;
3、优化器分析的统计信息陈旧也可能导致不走索引;
execute dbms_stats.gather_table_stats($USER_NAME,$TABLE_NAME);
4、索引字段 is null 不走索引;
5、对于count(*)当索引字段有not null约束时走索引,否则不走索引;
6、like 后面的字符当首位为通配符时不走索引;
7、使用不等于操作符如:<>、!= 等不走索引;
8、索引字段前加了函数或参加了运算不走索引;
9、索引字段之间用 or ;
or 转为union all
cbo比较“傻”,它计算出来哪个执行计划的cost小就会默认用哪个。cost在计算过程中会取近似值,这会导致有时cbo选择的错误的执行计划。同时有时表的信息没有收集正确也会导致实际计算的cost有偏差选择错误的执行计划。最后,如果oracle认为走索引不能正确实现sql的目的,这是就是用hint也是不会选择索引的。
0 0
- oracle函数索引小结
- oracle索引知识小结
- Oracle索引小结
- 72、oracle函数索引小结
- oracle学习小结3之索引
- Oracle本地分区索引的使用小结
- Oracle本地分区索引的使用小结
- oracle学习小结3之索引
- 深入理解Oracle索引(24):B*Tree 索引小结
- Oracle与Mysql主键、索引及分页的区别小结
- Oracle与Mysql主键、索引及分页的区别小结
- oracle索引-函数索引
- 数据库索引小结
- innodb 索引设计小结
- 【mysql】索引使用小结
- 文本索引小结
- 分区索引小结
- mongo索引小结
- C++基础知识(三)—— 常量
- tomcat各目录(文件)作用
- 每个程序员都应该知道的8个Linux命令
- C++基础知识(四)—— 操作符/运算符
- 单链表的插入(完整版程序c语言实现,以字符串为数据)
- Oracle索引小结
- Java的运行原理(转)
- Spring介绍
- Linux内核中的常用宏container_of其实很简单
- 【Spring学习】Bean生命周期
- Hibernate中持久化上下文的flush操作之一COMMIT
- android-R.style
- python远程连接mysql服务器
- C语言函数sscanf()的用法