`
杨振华
  • 浏览: 9762 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oralce索引失效情况汇总

 
阅读更多
引起oracle索引失效的原因很多:

1、在索引列上使用函数。如SUBSTR,DECODE,INSTR等,对索引列进行运算.需要建立函数索引就可以解决了。
创建函数索引方式:
表dept,有col_1,col_2,现在对col_1做upper函数索引
这样就行了
CREATE INDEX index_name
ON dept(upper(col_1));
函数索引是基于代价的优化方式-CBO,(在Oracle8及以后的版本,Oracle强列推荐用CBO的方式,而非RBO),所以表必须经过analyze才可以使用,或者使用hints才可以
2、新建的表还没来得及生成统计信息,分析一下就好了
3、基于cost的成本分析,访问的表过小,使用全表扫描的消耗小于使用索引。
4、使用<>、not in 、not exist,对于这三种情况大多数情况下认为结果集很大,一般大于5%-15%就不走索引而走FTS。
5、单独的>、<。
6、like "%_" 百分号在前。
7、单独引用复合索引里非第一位置的索引列。
8、字符型字段为数字时在where条件里不添加引号。
9、当变量采用的是times变量,而表的字段采用的是date变量时.或相反情况。
10、索引失效,可以考虑重建索引,rebuild online。
11、B-tree索引 is null不会走,is not null会走,位图索引 is null,is not null  都会走、联合索引 is not null 只要在建立的索引列(不分先后)都会走。
分享到:
评论

相关推荐

    oracle索引失效的总结

    ### Oracle索引失效的原因及解决方法 在Oracle数据库中,索引是提高查询效率的关键工具之一。然而,在实际的应用过程中,由于多种原因可能会导致索引失效,从而影响系统的性能。本文将详细介绍Oracle索引失效的一些...

    oracel 分区表索引失效的问题

    ### Oracle 分区表索引失效的问题 #### 一、全局索引与分区表的关系 **全局索引**(Global Index)是指索引覆盖整个表的所有数据,而不受限于分区边界。这种类型的索引通常用于非分区列或者跨分区查询。 **实验...

    ORACLE重建索引总结

    本文主要总结了重建Oracle索引的相关知识点。 一、重建索引的前提条件 当表上的数据频繁进行`UPDATE`和`DELETE`操作,或者执行了`ALTER TABLE ... MOVE`操作导致ROWID改变时,可能需要考虑重建索引。这些操作可能...

    Oracle索引(B*tree与Bitmap)的学习总结

    当涉及到索引失效的问题,需要注意以下几点: 1. 不等于操作符(或!=)通常会导致索引无法使用,可以尝试将其转换为OR条件来利用索引。 2. IS NULL或IS NOT NULL的使用也会限制索引的运用,除非是Bitmap索引,因为...

    Oracle执行计划不走索引的原因总结

    7. **隐式类型转换**:当索引列的类型与查询条件中的类型不符时,会发生隐式类型转换,这会导致索引失效。例如,字符串类型的列与整数比较时,应确保类型匹配,或创建正确的函数索引。 8. **部分索引匹配**:使用...

    ORACLE调优文档总结

    - **索引优化**:合理创建和使用B树、位图、函数索引,避免索引失效和索引选择不当。 - **分区技术**:通过分区降低数据量,提高查询效率,如范围分区、列表分区、哈希分区等。 - **表空间和数据文件管理**:合理...

    Oracle语句优化规则汇总

    - 避免索引失效:DML操作(INSERT、UPDATE、DELETE)可能导致索引失效,及时REBUILD索引保持其有效性。 5. **查询语句优化**: - 减少全表扫描:尽量避免无谓的全表扫描,利用索引或分区策略。 - 使用绑定变量:...

    ORACLE数据库索引的设计与维护研究.pdf

    - **索引失效**:当表结构更改或数据异常时,索引可能失效。通过重建索引或重新分析统计信息可解决。 - **索引碎片**:大量插入、删除和更新操作可能导致索引碎片,影响查询性能。定期整理索引以减少碎片。 - **...

    ORACLE数据库SQL语句编写优化总结

    4. 尽量避免在索引列上使用计算或函数,这样会导致索引失效。 5. 使用&gt;=代替&gt;可以避免潜在的性能损失。 6. 在使用索引时,总是使用索引的第一个列。 7. 自动选择索引可以减少维护的工作量,但是要根据实际情况来看...

    Oracle复习总结

    8. **索引与查询性能**:索引不总是能提高查询性能,如果查询不使用索引或索引失效,可能反而导致性能下降。正确选择和设计索引是关键。 9. **绑定变量**:绑定变量避免了SQL的硬解析,减少CPU消耗和Shared Pool的...

    Oracle数据库的优化学习总结

    同时,创建复合索引、考虑索引覆盖和避免索引失效也是索引优化的重要策略。 三、表设计与分区 合理的表设计能减少数据冗余和提高数据一致性。分区是大型数据库中常用的技术,通过将大表分成较小、更易管理的部分,...

    oracle 10g views汇总

    Oracle 10g Views 汇总是数据库管理员和开发人员的重要参考资料,它涵盖了Oracle数据库10g版本中视图的相关知识。视图是数据库系统中的一个重要特性,它允许用户从一个或多个表创建虚拟表,这些虚拟表可以简化数据...

    oracle表空间变动注意事项

    在移动表时,如果表上存在索引,可能会导致索引失效。这是因为移动操作可能会改变数据的物理布局,从而影响到索引的结构。 ##### 解决方案: 1. **重建索引**:使用`ALTER INDEX REBUILD`命令来重建索引,确保索引...

    oracle查询优化

    - **避免索引失效**:确保查询条件与索引字段相匹配,避免使用函数或表达式对索引字段进行操作。 #### 三、简化查询结构 - **减少使用IN或OR**:当WHERE子句中包含IN或OR时,可能会影响索引的有效性。应尽量避免或...

    Oracle 开发经验

    - **问题**:使用OR连接多个条件可能导致索引失效。 - **解决方案**:使用UNION ALL替代,如: ```sql SELECT id FROM table WHERE num = 10 UNION ALL SELECT id FROM table WHERE num = 20; ``` **1.5 谨慎...

    Oracle查询优化改写 技巧与案例

    - **避免在索引列上使用函数**:函数会使索引失效,尽量在WHERE子句中使用原始列名。 - **合理使用连接顺序**:JOIN操作时,优化器会根据表大小和索引选择最佳连接顺序。手动指定`USING`或`ON`子句可影响连接顺序...

    ORACLE_数据库日常工作维护知识总结.pdf

    - 检查失效的索引:确保索引有效,以维持查询性能。 - 检查不起作用的约束:确保数据库的数据完整性约束是有效的。 - 检查无效的trigger:无效的trigger可能会影响数据库操作,需要进行检查和优化。 以上知识点...

    《oracle SQL性能优化》中文电子书

    书中会讲解如何选择合适的索引类型(如B树索引、位图索引、函数索引等),以及何时创建和使用索引,如何避免索引失效和索引扫描的全表扫描。 2. **查询优化器**:Oracle的查询优化器是自动选择执行计划的工具。它会...

Global site tag (gtag.js) - Google Analytics