`
tianlijia202
  • 浏览: 79480 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

索引问题

    博客分类:
  • sql
 
阅读更多

索引类型:

http://blog.csdn.net/java3344520/article/details/6035617 

 

出处:http://my.oschina.net/sunwei1002/blog/15011

 

1.隐式转换导致索引失效.这一点应当引起重视.也是开发中经常会犯的错误.

  由于表的字段tu_mdn定义为varchar2(20),但在查询时把该字段作为number类型以where条件传给Oracle,这样会导致索引失效.
 错误的例子:select * from test where tu_mdn=13333333333;
 正确的例子:select * from test where tu_mdn='13333333333';
   2. 对索引列进行运算导致索引失效,我所指的对索引列进行运算包括(+,-,*,/,! 等)
  错误的例子:select * from test where id-1=9;
 正确的例子:select * from test where id=10;
   3. 使用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; 这时函数索引起作用了
   4. 以下使用会使索引失效,应避免使用;
  a. 使用 <> 、not in 、not exist、!=
 b. like "%_" 百分号在前(可采用在建立索引时用reverse(columnName)这种方法处理)
       c. 单独引用复合索引里非第一位置的索引列.应总是使用索引的第一个列,如果索引是建立在多个列上, 只有在它的第一个 列被where子句引用时,优化器才会选择使用该索引。
 d. 字符型字段为数字时在where条件里不添加引号.
 e. 当变量采用的是times变量,而表的字段采用的是date变量时.或相反情况。
 
 
    5. 不要将空的变量值直接与比较运算符(符号)比较。
   如果变量可能为空,应使用 IS NULL 或 IS NOT NULL 进行比较,或者使用 ISNULL 函数。
    6. 不要在 SQL 代码中使用双引号。
  因为字符常量使用单引号。如果没有必要限定对象名称,可以使用(非 ANSI SQL 标准)括号将名称括起来。
    7. 将索引所在表空间和数据所在表空间分别设于不同的磁盘chunk上,有助于提高索引查询的效率。
     8. Oracle默认使用的基于代价的SQL优化器(CBO)非常依赖于统计信息,一旦统计信息不正常,会导致数 据库查询时不使用索引或使用错误的索引。
     一般来说,Oracle的自动任务里面会包含更新统计信息的语句,但如果表数据发生了比较大的变化(超过 20%),可以考虑立即手动更新统计信息,例如:analyze table abc compute statistics,但注意,更新统计 信息比较耗费系统资源,建议在系统空闲时执行。
    9. Oracle在进行一次查询时,一般对一个表只会使用一个索引.
     因此,有时候过多的索引可能导致Oracle使用错误的索引,降低查询效率。例如某表有索引1(Policyno) 和索引 2 classcode ),如果查询条件为  policyno =  xx   and classcode =  xx ,则系统有可能会使用索引 2,相较于使用索引1,查询效率明显降低。
    10. 优先且尽可能使用分区索引。
分享到:
评论

相关推荐

    oracle索引,常见索引问题

    Oracle数据库中的索引是优化查询性能的关键工具,它...因此,当遇到常见的索引问题时,如索引未被使用、索引碎片化、索引过多或过少等,都需要深入分析并采取相应的解决方案,如重建索引、优化查询语句或调整索引策略。

    枚举量的索引问题

    本篇文章将深入探讨如何在C++和Qt环境下处理枚举量的索引问题,特别是如何利用`QMap`和`QSet`等数据结构来管理这些枚举值。 首先,C++中的枚举类型分为两种:标准枚举(enum)和枚举类(enum class)。标准枚举默认...

    Python算法:如何解决回文索引问题.rar_回文索引_索引

    在Python编程语言中,回文索引问题是一个有趣的算法挑战,它涉及到字符串处理和数组操作。回文是指正读反读都能读通的词语,比如“上海自来水来自海上”。回文索引问题则是指在给定字符串中找到所有能够形成回文子串...

    Oracle索引问题诊断与优化

    本文将深入探讨Oracle索引问题的诊断与优化。 首先,通过实验我们看到,未建立索引的表s1在执行查询时耗时2.45秒,而建立了索引的表s2则只需0.59秒,这清楚地显示了索引对于提高查询速度的作用。索引可以极大地减少...

    Lucene5学习之增量索引(Zoie)

    Lucene本身并不直接支持增量索引,因此,开发者们开发了Zoie系统,它是基于Lucene的一个扩展,旨在解决大数据量场景下的实时索引问题。Zoie的名字来源于“Zero Indexing Overhead”,即零索引开销,它的核心思想是...

    完美解决webstorm启动索引文件卡死的问题

    然而,在使用WebStorm对包含大量依赖项的项目进行索引时,有时会遇到性能问题,其中一种表现就是WebStorm在启动时索引node_modules文件夹导致卡死。 node_modules文件夹是npm安装的依赖包存放地。在大型项目中,这...

    mysql面试题,以及经典的索引问题详解

    本文将深入探讨MySQL面试中的常见问题,特别是与索引相关的经典问题。 首先,我们要了解什么是索引。索引是数据库管理系统用于快速查找数据的一种数据结构,类似于书籍的目录。它允许数据库系统不必扫描整个表就能...

    Oracle为sdo_geometry创建空间索引

    本文将详细介绍如何在 Oracle 中创建空间索引,包括创建空间索引的步骤、注意事项和常见问题。 一、 创建空间索引前的准备 在创建空间索引之前,需要先创建一个包含 sdo_geometry 数据类型的表。sdo_geometry 是 ...

    索引分词查看工具

    总的来说,Luke 6.0作为一款强大的索引查看工具,它不仅简化了对Lucene索引的理解,而且提供了丰富的分析功能,对于优化搜索性能、调试索引问题以及提升整体搜索体验都具有显著的帮助。如果你在处理Lucene索引时遇到...

    php mysql索引问题

    本文将围绕“PHP MySQL索引问题”展开讨论,介绍MySQL索引的创建、作用以及优化策略。 首先,我们创建一个表时,会涉及到主键和自动递增(AUTO_INCREMENT)的概念。在描述中提到了使用GUI工具创建表,并设置了REF...

    MySQL批量插入和唯一索引问题的解决方法

    通过理解这些问题并应用相应的解决方案,你可以更有效地处理MySQL中的批量插入和唯一索引问题,确保数据的完整性和系统的稳定性。在实际操作中,还需要注意数据库性能优化,避免过度增加索引或不当的批量操作对系统...

    Matlab索引

    Matlab 索引 Matlab 是一款功能强大的数学软件,广泛应用于科学计算、数据分析、图形显示等领域。Matlab 索引是 Matlab 中的一个重要概念,它提供了一个快速查找和了解 Matlab 中的符号、指令、模块和图形对象属性...

    查看索引库文件

    通过使用Luke,开发者和管理员可以更好地理解Lucene是如何处理和存储数据的,这对于优化搜索性能、调试索引问题以及了解搜索结果的生成过程非常有帮助。 总结来说,“查看索引库文件”涉及到的核心技术是Lucene,它...

    【技术】检查该重新编译的索引

    这些工具可以帮助我们自动化检测和处理索引问题,减少手动操作的复杂性。 6. **性能监控**:持续监控数据库的性能指标,如CPU使用率、I/O等待时间等,当发现与索引相关的性能下降时,应考虑是否需要重新编译索引。 ...

    Mybatis Plus 自定义批量插入或批量更新(根据唯一索引)

    然而,当涉及到唯一索引时,简单的批量操作可能无法满足需求,因为可能会有重复的数据导致冲突。 在 Mybatis Plus 中自定义批量插入,我们可以通过继承 `AbstractService` 类并覆写 `batchInsert()` 方法来实现。在...

    Lucene索引文件查看工具lukeall4.7.1

    9. **元数据查看**:除了文档内容,LukeAll还可以展示索引级别的元数据,如版本信息、段信息等,这些信息对于诊断索引问题和优化索引结构极具价值。 10. **自定义配置**:用户可以根据需求配置LukeAll,比如选择...

    Python Pandas 获取列匹配特定值的行的索引问题

    ### Python Pandas 获取列匹配特定值的行的索引问题 在进行数据分析时,我们经常需要根据某一条件筛选数据,特别是在使用Python中的Pandas库时。本文将详细介绍如何使用Pandas来查找DataFrame中某一列匹配特定值的...

Global site tag (gtag.js) - Google Analytics