1) 没有查询条件,或者查询条件没有建立索引
2) 在查询条件上没有使用引导列
3) 查询的数量是大表的大部分,应该是30%以上。
4) 索引本身失效
5) 查询条件使用函数在索引列上,或者对索引列进行运算,运算包括(+,-,*,/,! 等) 错误的例子:select * from test where id-1=9; 正确的例子:select * from test where id=10;
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';
12) 1,<> 2,单独的>,<,(有时会用到,有时不会)
13,like "%_" 百分号在前.
4,表没分析.
15,单独引用复合索引里非第一位置的索引列.
16,字符型字段为数字时在where条件里不添加引号.
17,对索引列进行运算.需要建立函数索引.
18,not in ,not exist.
19,当变量采用的是times变量,而表的字段采用的是date变量时.或相反情况。
20,B-tree索引 is null不会走,is not null会走,位图索引 is null,is not null 都会走
21,联合索引 is not null 只要在建立的索引列(不分先后)都会走, in null时 必须要和建立索引第一列一起使用,当建立索引第一位置条件是is null 时,其他建立索引的列可以是is null(但必须在所有列 都满足is null的时候),或者=一个值; 当建立索引的第一位置是=一个值时,其他索引列可以是任何情况(包括is null =一个值),以上两种情况索引都会走。其他情况不会走。
相关推荐
自己整理有关MySQL的索引失效相关的信息,重点在组合索引的失效,有兴趣可以看看,看看是否对你有些许帮助
MySQL 索引失效详解 MySQL 索引是一种加快数据检索速度的数据库对象。索引可以大幅度提高查询效率,但是如果不正确使用索引,可能会导致索引失效。索引失效是指MySQL 不能使用索引来加速查询,导致查询效率下降。 ...
mysql-实用-索引失效和优化原则
mysql索引失效测试数据
### MySQL索引失效详解 #### 一、引言 在日常工作中,SQL是不可或缺的技术工具之一,但在实际操作中,不少开发人员对于SQL优化及索引的理解并不深入。特别是当数据量逐渐增大时,索引的正确使用与否直接影响着系统...
3. **范围查询**:如果查询条件包含索引列的范围,如`WHERE column BETWEEN a AND b`,MySQL通常只能使用索引的一部分,导致部分索引失效。 4. **使用否定条件**:如`WHERE column != value`,MySQL可能无法有效地...
在面试过程中,常常会涉及到MySQL索引的相关问题,包括索引的原理、优化技巧以及索引失效的原因等。 首先,MySQL索引是一种数据结构,用于快速定位和访问数据库中的数据。它通过创建索引列和索引对象来实现,可以...
### MySQL索引失效的11种情况 #### 知识点概述 在MySQL数据库中,索引是非常重要的优化工具之一,它可以显著加快数据检索的速度。然而,在某些情况下,索引可能会失效,导致查询效率降低。了解这些情况对于优化...
MySQL索引是数据库性能优化的关键,但有时索引可能会失效,导致查询效率降低。下面将详细探讨几种常见的索引失效情况及其原因。 首先,索引不存储`NULL`值。在MySQL中,单列索引不会存储`NULL`值,而复合索引则不...
以下就是五种可能导致MySQL索引失效的情况: 1. **OR条件**:当查询语句中包含OR操作符时,即使部分条件涉及到带有索引的列,MySQL也可能不会使用索引。为了使索引生效,每个OR子句中的列都需要有独立的索引。例如...
Java高级试听课:MySQL 执行计划查看、索引失效分析、加锁分析
### MySQL索引最佳实践 #### 理解索引的重要性 在数据库管理中,索引是一种数据结构,用于提高查询速度。它对于开发者和数据库管理员(DBA)来说至关重要。索引选择不当可能会导致生产环境中的诸多问题。尽管索引...
### MySQL数据库及索引详解 #### 一、MySQL简介与数据库发展 MySQL是一款非常流行的开源关系型数据库管理系统,由瑞典MySQL AB公司开发。它以其高性能、稳定性和易用性著称,广泛应用于Web应用程序和企业级系统中...
7月6日 MySQL索引篇7月6日 MySQL索引篇7月6日 MySQL索引篇7月6日 MySQL索引篇7月6日 MySQL索引篇7月6日 MySQL索引篇7月6日 MySQL索引篇7月6日 MySQL索引篇7月6日 MySQL索引篇7月6日 MySQL索引篇7月6日 MySQL索引篇7...
MySQL索引 聚集索引 如果你想了解MySQL索引查询优化,你首先应该对MySQL数据组织结构、B-Tree索引、聚集索引,次要索引有一定的了解,才能够更好地理解MySQL查询优化行为。这里主要探讨MySQL InnoDB的聚集索引。
不恰当的索引设置往往会导致生产环境中出现各种问题,比如查询速度慢、资源占用高、系统响应时间增加等。 #### 二、MySQL索引类型详解 ##### 1. B-Tree索引 - **定义**:B-Tree(平衡树)是最常见的索引类型,在...
、、IS NULL、LIKE '%value%'等操作,这些会导致索引失效。 - 尽量让经常一起出现在`WHERE`子句中的列形成复合索引。 - 使用覆盖索引(Covering Index),使查询可以从索引中直接获取所需数据,避免回表操作。 ...