欢迎来到曹鸿源的个人站点

       
点击小屏 点击全屏

MySQL 什么情况下不需要使用索引和索引失效的场景

--什么情况下不需要使用索引呢?

1.WHERE 条件(包括 GROUP BYORDER BY)里用不到的字段不需要创建索引,索引的价值是快速定位,如果起不到定位的字段通常是不需要创建索引的。

2.如果表记录太少,比如少于 1000 个,那么是不需要创建索引的。

3.字段中如果有大量重复数据,也不用创建索引,比如性别字段。

4.频繁更新的字段不一定要创建索引。因为更新数据的时候,更新会变更B+树,也需要更新索引,如果索引太多,在更新索引的时候也会造成负担,从而影响效率。


--什么情况下索引失效

1.如果索引进行了表达式计算,则会失效。

2.如果对索引使用函数,也会造成失效。

3. WHERE 子句中,如果在 OR 前的条件列进行了索引,而在 OR 后的条件列没有进行索引,那么索引会失效。

4.当我们使用 LIKE 进行模糊查询的时候,前面是 %,会造成失效。

5.使用联合索引的时候要注意最左原则,例如如果当前联合索引是index(a,b,c),那么如果where子句中有a就会用到联合索引,但是如果只用到b,c就会失去索引效果。

6.隐式类型转换,即字段类型和值的类型不一致。

7.隐式字符编码转换导致的索引失效,例如:当两个表之间做关联查询时,如果两个表中关联的字段字符编码不一致的话,MySQL可能会调用CONVERT函数,将不同的字符编码进行隐式转换从而达到统一。作用到关联的字段时,就会导致索引失效。


喜欢这个插件?点击获取:cShare

本文链接地址,转载请标注: http://caohongyuan.cn/article/177


上一篇:没有了,点击查看全部

下一篇:PHP 计算二维数组中某一元素之和

(邮箱不会公开,只会做回复通知用) 提交 清空 {{comment.content}}
Re:{{response.content}}