马鞍山市网站建设公司,大型外包软件公司有哪些,三明市住房和城乡建设局网站,优秀vi设计案例分析ppt目录一#xff1a;背景介绍二#xff1a;索引失效复现四#xff1a;索引实现的六种情况1、类型转换#xff0c;函数2、ISNULL3、通配符开头4、范围查询5、组合索引#xff0c;不符合最左匹配原则6、WHERE子句中的OR四#xff1a;总结一#xff1a;背景介绍
MySql数据库…
目录一背景介绍二索引失效复现四索引实现的六种情况1、类型转换函数2、ISNULL3、通配符开头4、范围查询5、组合索引不符合最左匹配原则6、WHERE子句中的OR四总结一背景介绍
MySql数据库的is_delete字段两个不同的表一个表内有217069条数据另一个表中有76015条数据查询速度很慢排查到是索引失效的问题。
二索引失效复现
where条件里字符类型的列如果传递的是数据类型的话可以查出来数据但是索引会失效 对应的索引 表中字段的数据类型 使用数值型进行查询 type中的ALL代表全表查询用结果上来看我们添加的索引是没有生效的。因为我们在执行sql语句的时候is_delete赋的值是数值类型但是数据库中是字符类型。所以进行了类型的转换。导致索引是没有生效的。 使用字符型进行查询 type中从ALL转换成了ref索引失效了
四索引实现的六种情况
1、类型转换函数 2、ISNULL 3、通配符开头 4、范围查询 5、组合索引不符合最左匹配原则
假设我们对字段 ab 建立了一个组合索引ab。 如果我们的查询是以下几种则会正常走联合索引
where a 1; where a 2 and b 2; 如果是如下几种则不会走组合索引
where b 2; where b 2 and a 3; 通过对比我们可以看出索引的生效是遵循最左匹配原则的。在使用的时候必须从最左侧的索引开始。
6、WHERE子句中的OR 四总结
遇到该类问题要先明确什么是索引以及哪种情况下会导致索引失效。