`

oracle 索引失效的情况分析

阅读更多

见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp54

 

 

1) 没有查询条件,或者查询条件没有建立索引 
2) 在查询条件上没有使用引导列 
3) 查询的数量是大表的大部分,应该是30%以上。 
4) 索引本身失效 
5) 查询条件使用函数在索引列上(见12) 
6) 对小表查询 
7) 提示不使用索引 
8) 统计数据不真实 
9) CBO计算走索引花费过大的情况。其实也包含了上面的情况,这里指的是表占有的block要比索引小。 
10)隐式转换导致索引失效.这一点应当引起重视.也是开发中经常会犯的错误. 由于表的字段tu_mdn定义为varchar2(20), 
但在查询时把该字段作为number类型以where条件传给Oracle,这样会导致索引失效. 
错误的例子:select * from test where tu_mdn=13333333333; 
正确的例子:select * from test where tu_mdn='13333333333'; 
11)对索引列进行运算导致索引失效,我所指的对索引列进行运算包括(+,-,*,/,! 等) 
错误的例子:select * from test where id-1=9; 
正确的例子:select * from test where id=10; 
12)使用Oracle内部函数导致索引失效.对于这样情况应当创建基于函数的索引. 
错误的例子:select * from test where round(id)=10; 
说明,此时id的索引已经不起作用了 正确的例子:首先建立函数索引, 
create index test_id_fbi_idx on test(round(id)); 
然后 select * from test where round(id)=10; 这时函数索引起作用了 1,<> 2,单独的>,<,(有时会用到,有时不会) 
3,like "%_" 百分号在前. 
4,表没分析. 
5,单独引用复合索引里非第一位置的索引列. 
6,字符型字段为数字时在where条件里不添加引号. 
7,对索引列进行运算.需要建立函数索引. 
8,not in ,not exist. 
9,当变量采用的是times变量,而表的字段采用的是date变量时.或相反情况。 
10, 索引失效。 
11,基于cost成本分析(oracle因为走全表成本会更小):查询小表,或者返回值大概在10%以上 
12,有时都考虑到了 但就是不走索引,drop了从建试试在 
13,B-tree索引 is null不会走,is not null会走,位图索引 is null,is not null 都会走 
14,联合索引 is not null 只要在建立的索引列(不分先后)都会走, 
in null时 必须要和建立索引第一列一起使用,当建立索引第一位置条件是is null 时, 
其他建立索引的列可以是is null(但必须在所有列 都满足is null的时候), 
或者=一个值;当建立索引的第一位置是=一个值时,其他索引列可以是任何情况(包括is null =一个值), 
以上两种情况索引都会走。其他情况不会走。

分享到:
评论

相关推荐

    ORACLE重建索引总结

    4、索引高度:索引高度是指由于数据行的插入操作而产生的索引层数,当表中添加大量数据时,oracle将生成索引的新层次以适应加入的数据行,因此,oracle索引可能有4层,但是这只会出现在索引数中产生大量插入操作的...

    Oracle Index索引无效的原因与解决方法

    索引无效原因 最近遇到一个Oracle SQL语句的性能问题,修改功能之前的运行时间平均为0.3s,...即将索引至于监控状态下,对索引进行分析。如下对 ID_TT_SHOHOU_HIST_002 索引进行分析 alter index ID_TT_SHOHOU_HIST_

    oracel 分区表索引失效的问题

    讲解oracle分区表的索引问题,有具体的例子和实验分析

    Oracle课件.pdf

    4.4 索引失效 5.表空间 6.表分区 6.1表空间及分区表的概念 6.2表分区的具体作用 6.3.表分区的优缺点 6.4表分区的几种类型及操作方法 6.5有关表分区的一些维护性操作 第5章 PL/SQL程序设计 1. PL/SQL简介 ...

    深入解析Oracle.DBA入门进阶与诊断案例

    10.4.2 诊断案例之一:隐式转换与索引失效 502 10.4.3 诊断案例之二:跟踪后台错误 506 10.4.4 10046与等待事件 509 10.5 使用物化视图进行翻页性能调整 514 10.5.1 系统环境 514 10.5.2 问题描述 514 ...

    Oracle数据库日常维护手册

    4. 检查 ORACLE 相关资源的使用情况........................................................................... 10 4.1. 检查 ORACLE 初始化文件中相关参数值....................................................

    非常全的oracle文档

    19.7. 分析函数 114 19.8. 通用函数 115 19.9. GROUP BY子句 116 19.10. HAVING子句 117 19.11. 实用方法 118 19.12. 练习 118 二十、 子查询 119 20.1. 使用子查询 120 20.2. IN\NOT IN操作符 122 20.3. ANY和ALL...

    Oracle9i的init.ora参数中文说明

    Oracle9i初始化参数中文说明 Blank_trimming: 说明: 如果值为TRUE, 即使源长度比目标长度 (SQL92 兼容) 更长, 也允许分配数据。 值范围: TRUE | FALSE 默认值: FALSE serializable: 说明: 确定查询是否获取表级...

    2018最新Mysql高级视频教程

    随着淘宝去IOE(去除IBM小型机、Oracle数据库及EMC存储设备)化的推进,MySQL 数据库在当前的互联网应用中变得越来越重要,本教程主要讲授针对 Java 开发所需的 MySQL 高级知识,课程中会让大家快速掌握索引,如何避免...

    04尚硅谷_MySQL高级_BD版.docx

    随着淘宝去IOE(去除IBM小型机、Oracle数据库及EMC存储设备)化的推进,MySQL 数据库在当前的互联网应用中变得越来越重要,本教程主要讲授针对 Java 开发所需的 MySQL 高级知识,课程中会让大家快速掌握索引,如何避免...

    mysql lunix的安装

    随着淘宝去IOE(去除IBM小型机、Oracle数据库及EMC存储设备)化的推进,MySQL 数据库在当前的互联网应用中变得越来越重要,本教程主要讲授针对 Java 开发所需的 MySQL 高级知识,课程中会让大家快速掌握索引,如何避免...

    语句性能分析之索引、内存、性能优化

    实现同样的功能,高质量的sql会比劣势的sql语句执行响应时间提升上百倍,接下来在这里猿君主要介绍如何避免索引失效,对内存、性能优化,提升sql执行效率。 一、分析sql执行计划 1.通过explain查看 explain select *...

    通俗易懂的MySQL高级教程(含配套资料)

    随着淘宝去IOE(去除IBM小型机、Oracle数据库及EMC存储设备)化的推进,MySQL 数据库在当前的互联网应用中变得越来越重要,本教程主要讲授针对 Java 开发所需的 MySQL 高级知识,课程中会让大家快速掌握索引,如何避免...

    Toad 使用快速入门

    Quest Software为此提供了高效的Oracle应用开发工具-Toad(Tools of Oracle Application Developers)。在Toad的新版本中,还加入了DBA模块,可以帮助DBA完成许多日常管理工作。它最大的特点就是简单易用,访问速度...

    收获不止SQL优化

    9.1.2 索引使用失效 236 9.2 感受美好索引另一面 237 9.2.1 索引各种开销 237 9.2.2 索引使用失效 243 9.2.3 索引取舍控制 246 9.3 从案例看索引各种恨 248 9.3.1 索引的开销 248 9.3.2 索引去哪儿了 253 ...

    某银行数据库月度巡检报告

    (六) 索引/行迁移/行链 38 (七) 失效对象 39 (八) Enqueue等待分析 41 (九) Latch分析 41 (十) Resource Limit分析 41 (十一) Top SQL语句 43 九、 数据库备份策略评估 44 (一) 备份 44 (二) 恢复 44 附录1:初始化...

Global site tag (gtag.js) - Google Analytics