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

Oracle不使用索引的情况

阅读更多
case1:建立组合索引,但查询谓词并未使用组合索引的第一列,此处有一个INDEX SKIP SCAN概念见书。
case2:在包含有null值的table列上建立索引,当时使用select count(*) from table时不会使用索引。
case3:在索引列上使用函数时不会使用索引,如果一定要使用索引只能建立函数索引。
case4:当被索引的列进行隐式的类型转换时不会使用索引。如:select * from t where indexed_column = 5,而indexed_column列建立索引但类型是字符型,这时Oracle会产生
隐式的类型转换,转换后的语句类似于select * from t where to_number(indexed_column) = 5,此时不走索引的情况类似于case3。日期转换也有类似问题,如:
select * from t where trunc(date_col) = trunc(sysdate)其中date_col为索引列,这样写不会走索引,可改写成select * from t where date_col >= trunc(sysdate)
and date_col < trunc(sysdate+1),此查询会走索引。
case5:并不是所有情况使用索引都会加快查询速度,full scan table 有时会更快,尤其是当查询的数据量占整个表的比重较大时,因为full scan table采用的是多块读,
当Oracle优化器没有选择使用索引时不要立即强制使用,要充分证明使用索引确实查询更快时再使用强制索引。
case6:很久没有分析表了。如果没有正确的统计信息,CBO将无法做出正确的决定。

如果是复合索引,并不是唯一性越强的列放到索引的第一列越有效率,查询的效率与复合索引的列顺序无关,关键是要看如何使用索引。
0
0
分享到:
评论

相关推荐

    oracle不走索引可能原因.docx

    在遇到Oracle不使用索引的情况时,不应盲目地强制使用索引。应先分析查询计划,理解Oracle优化器的选择,并进行性能测试,确保使用索引能带来显著的性能提升。在某些情况下,优化SQL语句结构、调整索引策略,或者...

    oracle在线创建索引和重组索引

    Oracle 在线创建索引和重组索引 Oracle 在线创建索引和重组索引是数据库管理员经常需要处理的问题。在线创建索引可以提高查询性能,而重组索引可以减少索引的碎片化和空间浪费。下面我们将详细介绍在线创建索引和...

    oracle约束和索引笔记

    - 不是所有查询都受益于索引,对于全表扫描或者不使用索引列的查询,索引可能反而增加系统负担。 - 使用`EXPLAIN PLAN`或`SQL Profiler`来分析查询性能,确定是否需要添加或调整索引。 **总结:** Oracle约束和...

    oracle中索引的使用

    另外,可以使用EXPLAIN PLAN或者SQL Trace等工具来分析查询执行计划,了解索引的使用情况。 在实际工作中,我们还需要关注索引的分区策略,对于大型表,通过分区可以进一步提升查询性能。例如,可以根据时间、地理...

    Oracle 索引 使用方法

    Oracle 索引 使用方法,索引 使用原理, 索引 使用顺序过程

    oracle索引使用样例

    ### Oracle索引使用样例详解 #### 一、索引并行创建 在Oracle数据库中,并行创建索引可以显著提高创建索引的速度,尤其是在处理大量数据时。下面的SQL语句展示了如何并行创建一个索引: ```sql CREATE INDEX IDX_GD...

    为什么oracle有时不用索引来查找数据

    本文将深入探讨Oracle在哪些情况下可能会选择不使用索引的原因,并解释背后的逻辑和技术细节。 #### Oracle查询优化器与执行计划 当用户提交一个SQL查询给Oracle数据库时,Oracle会根据内部优化器生成一个执行计划...

    oracle的索引学习

    本篇文章将深入探讨Oracle索引的学习,重点关注索引的原理、类型、优缺点以及如何使用和分析执行计划。 首先,理解索引的基本概念。索引是一种特殊的数据结构,它存储在表空间中,用于加速对表数据的访问。当执行...

    BLOG_Oracle之不可见索引.pdf

    - **监控工具**:Oracle提供了一系列工具,如`EXPLAIN PLAN`、`DBMS_XPLAN`和`V$ views`,帮助DBA监控索引使用情况和性能影响。 - **性能测试**:通过对比启用和禁用索引前后的查询执行计划和执行时间,来判断索引的...

    数据库 创建索引 sql oracle

    "数据库创建索引SQL Oracle" 数据库索引是数据库性能优化的重要手段之一。创建索引可以提高查询速度,降低数据库的负载,提高数据的安全性。本文将详细介绍数据库创建索引的原则、分类、创建方法、管理和优化等方面...

    浅谈oracle中重建索引

    3. **索引使用情况评估**:通过查询`INDEX_STATS`视图可以获取索引的使用情况,包括当前索引中的值数量(`LF_ROWS`)、值长度总和(`LF_ROWS_LEN`)、已被删除的值数量(`DEL_LF_ROWS`)以及被删除的值长度总和(`DEL_LF_...

    oracle索引与分区索引介绍

    Oracle 索引与分区索引介绍 Oracle 索引与分区索引是 Oracle 数据库中两个重要的概念,它们都是为了提高查询性能和数据存储效率而设计的。在本文中,我们将详细介绍 Oracle 索引与分区索引的概念、特点、分类、创建...

    oracle、sql数据库批量建索引

    在数据量庞大的情况下,索引的重要性尤为突出。 对于Oracle数据库,批量创建索引可以通过SQL命令或者PL/SQL脚本来实现。例如,你可以使用`CREATE INDEX`语句来创建单个索引,然后通过循环结构批量处理多个索引。...

    oracle索引被限制的一些情况

    Oracle索引被限制的一些情况 Oracle索引是关系数据库管理系统中用于提高查询效率的一种机制,但是索引的使用也存在一些限制。本文将详细介绍一些常见的限制情况,帮助开发人员更好地使用索引,提高查询效率。 限制...

    oracle分区与索引

    3. **监控索引使用情况**:定期检查哪些索引被频繁使用,哪些几乎不被访问,以便优化索引结构。 综上所述,Oracle中的分区与索引是提高数据库性能的关键工具。通过合理的设计和管理,可以显著提升查询效率,同时...

    ORACLE分区与索引

    Oracle 分区与索引是数据库管理系统中用于优化大数据查询的关键技术。Oracle 分区是一种将大表和索引分成可管理的小部分,以提高查询效率、维护性和可用性。这种技术适用于处理海量数据,通过将数据分散到不同的存储...

    Oracle_Index 索引

    Oracle_Index 索引

    Oracle 创建索引的基本规则

    - **监控索引使用情况**: 使用Oracle的工具如AWR报告来监控索引的使用情况,识别未被充分利用的索引并进行调整。 - **避免频繁修改索引列**: 对索引列频繁进行UPDATE、INSERT或DELETE操作会导致索引碎片化,影响性能...

    清除Oracle中无用索引

    基于功能的Oracle索引使得数据库管理人员有可能 在数据表的行上过度分配索引。过度分配索引会严重影响关键Oracle数据表的性能。在Oracle9i出现以前,没有办法确定SQL查询没有使用的索引。让我们看看Oracle9i提供了...

    oracle索引,常见索引问题

    Oracle数据库中的索引是优化查询性能的关键工具,它允许快速定位和访问数据。常见的索引类型包括B*树索引和位图索引,每种都有其特定的应用场景和优势。 1. **B*树索引**:这是最常见的索引类型,类似于二叉树结构...

Global site tag (gtag.js) - Google Analytics