`

oracle 不走索引的几种情况(转)

 
阅读更多
1、建立组合索引,但查询谓词并未使用组合索引的第一列,此处有一个INDEX SKIP SCAN概念。 
2、在包含有null值的table列上建立索引,当时使用select count(*) from table时不会使用索引。 
3、在索引列上使用函数时不会使用索引,如果一定要使用索引只能建立函数索引。 
4、当被索引的列进行隐式的类型转换时不会使用索引。如: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),此查询会走索引。 
5、并不是所有情况使用索引都会加快查询速度,full scan table 有时会更快,尤其是当查询的数据量占整个表的比重较大时,因为full scan table采用的是多块读, 
当Oracle优化器没有选择使用索引时不要立即强制使用,要充分证明使用索引确实查询更快时再使用强制索引。 

6、<>

7、like’%dd’百分号在前


8、not in ,not exist.  

 

分享到:
评论

相关推荐

    oracle约束和索引笔记

    它们分为以下几种类型: - **非空约束(NOT NULL)**: 非空约束不允许字段值为NULL,确保该字段始终有值。 - **唯一约束(UNIQUE)**: 这种约束保证字段中的每个值都是唯一的,但允许NULL值。可以应用于单个字段...

    oracle索引,常见索引问题

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

    Oracle数据库索引的维护

    ### Oracle数据库索引的维护 在Oracle数据库管理与优化的过程中,索引的维护是非常关键的一环。合理地创建、管理和优化索引能够显著提高查询性能,降低系统的响应时间,从而提升整个应用程序的效率。本文将从Oracle...

    Oracle索引分析与比较

    Oracle 索引是数据库管理系统中提升数据查询速度的关键组件,尤其在大型企业级应用中,选择合适的索引类型对于数据库性能至关重要。本篇文章将深入探讨Oracle中的B*Tree索引、反向索引、降序索引、位图索引和函数...

    oracle 索引创建.ppt

    首先,索引分为几种主要类型,包括B树索引、位图索引、函数索引和全局唯一索引等。B树索引是最常见的一种,其内部结构由根块、分支块和叶子块组成。在提供的内容中,我们看到了类似B树结构的分布模式,这可能是在...

    ORACLE索引详解及SQL优化

    本文将深入探讨Oracle索引的原理、创建方法,并结合SQL优化策略,帮助你提升数据库查询速度,降低资源消耗。 首先,我们要理解索引的基本概念。在数据库中,索引类似于书籍的目录,它为数据提供快速访问的途径。...

    oracle的索引初步学习.doc

    从物理上讲,Oracle索引可以分为以下几种类型: 1. **分区和非分区索引**:根据索引所在表是否进行了分区划分。 2. **常规B树索引**:最常见的索引类型,适用于大多数场景。 3. **位图(bitmap)索引**:用于处理...

    oracle索引使用样例

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

    Oracle数据库中的索引管理技术.pdf

    Oracle 8i 支持几种不同类型的索引以满足许多类型的应用程序的需求,其中包括 B-树(标准)索引、反向键索引、位图索引、索引编排表和基于函数的索引。这些索引都是基于表列创建的各种类型的索引。 (1)标准(B-树...

    Oracle 分区表 分区索引

    在Oracle数据库中,分区技术是一种非常有效的管理大型表和索引的方法。通过将一个大的表或索引分成多个较小的部分(分区),可以显著提高查询性能,并简化表和索引的管理。 #### 二、何时使用分区 在决定是否对表...

    Oracle 索引 详解

    在本文中,我们将详细介绍 Oracle 索引的创建、特点、不足、创建索引列的特点、不应该建索引列的特点、限制索引等方面的知识点。 一、索引介绍 索引是 Oracle 数据库中的一种数据结构,它可以加快数据的检索速度,...

    为什么有时ORACLE数据库不用索引来查找数据.doc

    Oracle数据库在某些情况下选择不使用索引来查找数据,这一现象与数据库的优化器策略密切相关。Oracle数据库有两种主要的优化器:基于规则的优化器(RBO)和基于代价的优化器(CBO)。RBO遵循固定规则,而CBO自Oracle...

    Oracle为sdo_geometry创建空间索引

    空间索引是 Oracle 中的一种特殊索引类型,用于加速空间数据的查询和检索。空间索引可以大大提高空间数据的查询效率,特别是在处理大量空间数据时。本文将详细介绍如何在 Oracle 中创建空间索引,包括创建空间索引的...

    影响Oracle数据库索引的几个因素浅析.pdf

    "影响Oracle数据库索引的几个因素浅析" 本文将探讨影响Oracle数据库索引的几个因素,并对索引的概念和作用进行剖析。索引是Oracle数据库中一个重要的对象,它可以提高查询表中的记录速度,类似于读者可以快速从图书...

    oracle海量数据中提升创建索引的速度.docx

    Oracle 海量数据中提升创建索引的速度是指在 Oracle 数据库中,特别是在海量数据的情况下,如何提高创建索引的速度。创建索引是数据库优化中的重要步骤,但是在海量数据的情况下,创建索引的速度可能会很慢,这将...

    oracle数据库转mysql数据库免费工具

    Oracle数据库和MySQL数据库是两种广泛使用的数据库管理系统,它们在数据存储、查询语法和管理机制上存在显著差异。在需要将Oracle数据库的数据迁移至MySQL时,就需要借助特定的转换工具来实现这一过程。"ora2mysqcn....

Global site tag (gtag.js) - Google Analytics