Mysql中会导致索引失效的情况

1.没有遵循最佳左前缀原则

2.对索引进行了数值运算,类型转换等操作

3.尽量不要使用or,否则or左侧索引失效

4.like查询时,不要以%开头,否则索引失效

5.复合索引不能使用不等于(!=  <>)或is null (is not null),否则自身以及右侧所有全部失效。
  复合索引中如果有>,则自身和右侧索引全部失效。

原文地址:https://www.cnblogs.com/wl889490/p/12659370.html

时间: 2024-10-08 08:47:00

Mysql中会导致索引失效的情况的相关文章

mybatis的sql语句导致索引失效,使得查询超时

mybaitis书写sql需要特别注意where条件中的语句,否则将会导致索引失效,使得查询总是超时.如下语句会出现导致索引失效的情况: with test1 as (select count(C_FUNDACCO) val,'a' v from TINF_REQUEST a where a.C_FUNDCODE = #{cFundcode} and a.D_DATADATE = #{dDatadate}), test2 as (select count(C_FUNDACCO) val,'a'

SQL SERVER 中is null 和 is not null 将会导致索引失效吗?

原文:SQL SERVER 中is null 和 is not null 将会导致索引失效吗? 其实本来这个问题没有什么好说的,今天优化的时候遇到一个SQL语句,因为比较有意思,所以我截取.简化了SQL语句,演示给大家看,如下所示 declare @bamboo_Code varchar(3);   set @bamboo_Code='-01';     SELECT DISTINCT yarn_lot FROM   dbo.rsjob WITH ( nolock ) WHERE  RIGHT(

MySQL优化(5):索引失效分析、in与exists使用场合

一.索引失效的情况 前文提及过可以通过explain的possible_keys.key属性判断索引是否失效,key如果为null,可能是索引没建,也可能是索引失效,下面列举一些会使索引失效的情况. 1.全值匹配:顺序.个数与索引一致 2.最佳左前缀法则:查询从索引的最左前列开始并且不跳过索引中的列,中间跳过的值,后面的索引会失效 3.索引列上做了操作(计算.函数.自动或手动类型转换),会导致索引失效而转向全表扫描 4.存储引擎不能使用索引中范围条件右边的列 name字段用于查找,age>11也

mysql中能够使用索引的典型场景

mysql 演示数据库:http://downloads.mysql.com/docs/sakila-db.zip 匹配全值 explain select * from rental where rental_date='2005-05-25 17:22:10' and inventory_id=373 and customer_id=343 匹配值的范围查询 explain select * from rental where customer_id >= 373 and customer_i

主键查询值,int与字符串类型混用导致索引失效

select * from user where id in (5230,'45') *************************** 1. row ***************************           id: 1  select_type: SIMPLE        table: user         type: ALLpossible_keys: PRIMARY          key: NULL      key_len: NULL          r

高性能MySQL中的三星索引

高性能MySQL中的三星索引 我对此提出了深深的疑问: 一星:相关的记录指的是什么??(相关这个词很深奥,“相关部门”是什么部门) 二星:如果建立了B-Tree(B+Tree)索引,数据就有序了.三星:索引的列包含了查询需要所有的列?根本不需要在where查询条件所有的列上建立索引! 我认为一星和二星的rows应该是columns,索引不关具体的数据行,只与查询的列有关.这样也与High Performance MySQL 后面提到的多列索引的观点相符合,特别是二星评估. 个人的观点: 评估一个

mysql 理解索引,添加索引,使用索引(哪些情况会导致索引失效)

索引用于快速找出在某个列中有一特定值的行.不使用索引,MySQL必须从第1条记录开始然后读完整个表直到找出相关的行,还需要考虑每次读入数据页的IO开销.而如果采取索引,则可以根据索引指向的页以及记录在页中的位置,迅速地读取目标页进而获取目标记录. 大多数情况下都(默认)采用B树来构建索引.只是空间列类型的索引使用R-树,并且MEMORY表还支持hash索引.B树是平衡多叉树,每个节点存放多少个值取决于值所占的空间,这与每一张数据页存放多少条记录与记录信息量有关同理.节点中的值是以非降序进行排列的

MySQL索引失效的情况

1.情况总结: 2.如何解决like %XXX,或者like %XXX%时索引失效的问题. 使用覆盖索引解决索引失效的问题 3.索引使用情况 4.口诀 原文地址:https://www.cnblogs.com/zlingchao/p/9786177.html

MySQL中的函数索引(Generated Column)及一次SQL优化

MySQL 中是没有 Oracle 的函数索引功能的,把 MySQL 的 Generated Column 称为"函数索引"并不准确,但可以和函数索引达到同样的效果,也有人把这个特性称为"衍生列". Generated Column 是什么 Generated Column 的值是根据其定义的表达式所计算而来的,下面使用官方文档中的例子做个简单介绍. 有一张表存储直角三角形的三条边长,大家都知道,根据直角三角形的边长公式,斜边的长度可以通过另外两条边长计算得到,这样