MYSQL索引失效的各种情况小结
一、对列使用函数,该列的索引将不起作用。
如:substring(字段名,1,2)='xxx';
二、对列进行运算(+,-,*,/,! 等),该列的索引将不起作用。
如:select * from test where id-1=9;//错误的写法;
select * from test where id=10; //正确的写法 ;
三、某些情况下的LIKE操作,该列的索引将不起作用。
如:字段名 LIKE CONCAT('%', '2014 - 08 - 13', '%') ;
四、某些情况使用反向操作,该列的索引将不起作用。
如:字段名 <> 2;
五、在WHERE中使用OR时,有一个列没有索引,那么其它列的索引将不起作用。
六、隐式转换导致索引失效.这一点应当引起重视.也是开发中经常会犯的错误。
由于表的字段t_number定义为varchar2(20),但在查询时把该字段作为number类型以where条件传给Oracle,这样会导致索引失效。
如: select * from test where t_number=13333333333; //错误的写法;
select * from test where t_number='13333333333'; //正确的写法;
七、使用not in ,not exist等语句时。
八、当变量采用的是times变量,而表的字段采用的是date变量时.或相反情况。
九、当B-tree索引 is null不会失效,使用is not null时,会失效,位图索引 is null,is not null 都会失效。
十、联合索引 is not null 只要在建立的索引列(不分先后)都会失效。
in null时 必须要和建立索引第一列一起使用,当建立索引第一位置条件是is null 时,其他建立索引的列可以是is null(但必须在所有列 都满足is null的时候),或者 = 一个值;
当建立索引的第一位置是 = 一个值时,其他索引列可以是任何情况(包括is null = 一个值),以上两种情况索引都会失效,其他情况不会失效。
相关文章
- MySQL联合索引使用分析 彻底搞清楚什么情况下会走索引
- mysql函数索引_MySQL 函数索引 (Functional indexes)
- 如何使用MySQL建立索引(mysql怎么建索引)
- MySQL中的簇索引:全面解析(mysql簇索引)
- MySQL 字符串函数:增强数据处理能力(mysql字符串函数)
- 索引优化21分钟,MySQL索引优化实现快速响应(21分钟mysql)
- 提升MySQL数据库性能的五大实用方法(mysql数据库优化方法)
- MySQL组合索引:优化查询效率的利器(mysql组合索引)
- MySQL轻松实现表的创建(mysql建立表)
- MySQL中建立树形索引实践(mysql树索引)
- 化MySQL索引碎片化优化及其技术实现(mysql索引碎片)
- 深入剖析:MySQL 辅助索引的作用与优化方法(mysql辅助索引)
- MySQL在知乎上的应用与实践(mysql知乎)
- MySQL数据库系统操作:使用DOS 命令(mysql dos 命令)
- 查看MySQL数据库的容量分布情况(mysql查看数据库大小)
- 驱动cnd程序实现MySQL数据库连接(cnd 输入mysql)
- MySQL如何实现两阶段提交浅析MySQL两阶段提交技术(mysql两阶段提交技术)
- 如何设置MySQL不存在的情况(mysql不存在怎么设置)
- MySQL收费下载,你必须要知道的事情(mysql下载收费)
- MySQL如何正确输入中文字符(mysql上如何输入汉字)
- 解决MySQL无法切换dir问题的方法(mysql不能切换dir)