`
tjuxiaoqiang
  • 浏览: 25999 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

索引失败原因

阅读更多
where 条件的区分度太小导致索引失败   原因:基于cost成本分析(oracle因为走全表成本会更小):查询小表,或者返回值大概在10%以上


失效原因:

索引失效
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 =一个值),
以上两种情况索引都会走。其他情况不会走。
分享到:
评论

相关推荐

    修复表索引损坏无法打开的问题

    ### 修复表索引损坏无法打开的问题 在数据库管理与维护的过程中,经常会遇到表索引损坏导致表无法正常打开的情况。这种情况通常会严重影响到数据库的性能以及数据的完整性,因此及时进行修复至关重要。本文将详细...

    Sql Server 数据库视图 索引等

    数据按照索引顺序存储,每个表最多只能有一个聚集索引。 - **非聚集索引:** 存储索引项的物理顺序与表中记录的物理顺序无关。 **创建索引示例:** ```sql -- 创建非唯一、非聚集索引 CREATE INDEX ix_名字 ON ...

    基于Hadoop的分布式索引构建

    分布式索引构建能利用HDFS的多份拷贝特性加快索引的分发速度,并且在集群发生硬件故障时不会整体失败,从而显著提高了系统的可靠性和处理速度。 分布式索引构建的过程可以简化为以下步骤:首先是将数据分布式存储在...

    ArcGIS教程:创建格网索引要素

    ### ArcGIS教程:创建格网索引要素 #### 核心知识点解读 ##### 一、格网索引要素概述 **格网索引要素**在ArcGIS中是一种重要的地图元素,主要用于定义地图册中的每一页。它不仅可以帮助定义地图页面的空间范围、...

    SQL_Server2005索引碎片分析和解决方法

    然而,需要注意的是,`DBCC DBREINDEX` 需要在数据文件中预留足够的空间来进行索引重建,否则可能导致操作失败或产生更多碎片。 ##### 2. DBCC INDEXDEFRAG `DBCC INDEXDEFRAG` 命令用于在线重新组织索引,以减少...

    函数索引使用

    - 如果索引处于`UNUSABLE`状态,则可以通过设置`SKIP_UNUSABLE_INDEXES`参数为`TRUE`来临时跳过它,但这可能导致某些操作失败。 #### 五、示例与实践 下面给出两个具体的函数索引创建示例: **示例1**:基于多个...

    极点五笔词库

    这是一个98版五笔词库,想点好办法,促进贵网站的点击率吧

    SqlServer性能优化高效索引指南

    此外,对于大型的可变长度数据类型如varchar(max)/nvarchar(max),需要特别注意索引的最大列数和最大字节数限制,以避免索引创建时的警告信息或操作失败。 总之,SqlServer性能优化是一个细致且复杂的过程,高效...

    c++构建倒排索引并搜索

    同时,考虑到错误处理,如文件读取失败、无效的用户输入等,应添加适当的异常处理机制。 这个项目不仅可以帮助学习者掌握C++编程,还能深入理解倒排索引的原理和实现,对于从事搜索引擎开发或文本分析的人来说,是...

    未能在 sysindexes 中找到数据库 ID 12 中对象 ID 1 的索引 ID 1 对应的行。请对 sysindexes 运行 DBCC CHECKTABLE。

    3. **恢复失败**:如果数据库处于恢复状态,而恢复过程出现问题,则可能导致此类错误。 4. **第三方工具使用不当**:在使用第三方备份或迁移工具时,若工具使用不当或存在兼容性问题,也可能引发此问题。 ### 解决...

    索引重建(重组)的常见问题.docx

    而重组索引则可以分解为多个较小的事务执行,允许部分成功,部分失败的情况存在。 ### 知识点三:在线与离线模式的区别 - **离线模式**(OFFLINE):在此模式下,索引重建过程中会获取排他锁(Sch-M锁),阻止所有...

    索引中丢失in或out参数终极解决方案.txt

    ---------索引中丢失in或out参数终极解决方案---------- 表现:提示的索引位置大于实际参数个数, 每次重启服务可以成功一次或几次, 之后短时间内全部失败. ---------祝各位工作愉快,全网首发,血泪史----------

    Paradox数据,索引文件修复工具

    5. 备份:在整个过程中,为防止原始数据丢失,工具通常会先创建备份,这样即使修复失败,也能回滚到原始状态。 6. 恢复:最后,修复的文件将替换原有的损坏文件,用户可以重新打开和使用修复后的Paradox数据库。 ...

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

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

    mysql索引、触发器、事务、存储过程说明

    事务是指一系列的操作被视为一个单独的工作单元,这些操作要么全部成功完成,要么全部失败。事务的主要特性包括原子性、一致性、隔离性和持久性(ACID)。 - **原子性**:事务中的所有操作要么全部完成,要么一个也...

    面试mysql 之索引 锁 事物

    1. **原子性(Atomicity)**:事务中的所有操作要么全部成功,要么全部失败。 2. **一致性(Consistency)**:事务执行前后,数据库都处于一致的状态。 3. **隔离性(Isolation)**:事务执行过程中不受其他事务的...

    ORACLE索引笔记.pdf

    创建大表索引时,可以关闭对应的redo日志,以提高创建速度,因为即使失败,数据仍可恢复。 7. **索引设计的决策**:在决定是否为某一列创建单个索引还是复合索引时,需要考虑查询模式和性能需求。已有一个复合索引...

    视图、索引及数据更新

    如果遇到问题,如创建位图索引失败,可能是因为Oracle版本不支持,通过查询`v$option`可以确认是否已安装位图索引功能。 总的来说,理解和熟练掌握视图、索引及数据更新的操作对于提升数据库性能和数据管理的效率至...

    Commvault V11索引功能介绍.pptx

    在V10版本中,索引操作是在线进行的,这意味着备份时间会受到索引创建、更新和归档的影响,这可能导致作业失败、备份超时以及性能下降。此外,索引缓存目录的增长可能造成性能问题,而索引数据库只能以ctree单用户...

Global site tag (gtag.js) - Google Analytics