前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >MYSQL哪些情况下会忽略索引

MYSQL哪些情况下会忽略索引

作者头像
码农编程进阶笔记
发布于 2021-07-20 09:04:07
发布于 2021-07-20 09:04:07
71600
代码可运行
举报
运行总次数:0
代码可运行

如何检查SQL语句是否用到索引?

使用“EXPLAIN sql语句”进行调试,查看possible_keys或key possible_keys:可能应用的索引 key:实际使用的索引

哪些情况下索引会被忽略

  1. 前导LIKE 语句 前导模糊查询不生效 (如 like '%XX'或者like '%XX%')
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//生效
explain select * from cartoon where `name` like '家里来了位道长大人%'
//不生效
explain select * from cartoon where `name` like '%555%'

2. “or“ 条件

3. “in“ 条件

4. “<>“ 不等于判断

5. “between“ 范围条件,可使用 where xx> 1 and xx<3代替

6. IS NULL 或 IS NOT NULL,判断为空

7. 不能在索引上做任何操作(计算、函数、自动/手动类型转换)

MYSQL索引类型

索引类型

1. 普通索引 (index)

2. 唯一索引 (unique)

在普通索引的基础上,会进行排除重复值

3. 主键索引 (primary key)

和唯一索引的区别在于一个表里只能有一个主键索引,但是唯一索引可以有多个。

4. 组合索引

ALTER TABLE table_name ADD INDEX index_name ( column1, column2, column3 )

5. 全文索引 (fulltext)

普通索引/唯一索引/主键索引 哪个速度更快?

速度是一样的快,因为三者都是采用btree二叉树算法进行查找。

2种索引算法

BTREE算法

Innodb和MyISAM默认的索引是BTREE索引 采用二叉树算法,左边的树枝小于根节点关键词,右边大于根节点,两边的树的深度不大于1,从而降低时间复杂度。

HASH算法

Mermory默认的索引是Hash索引 Hash索引只能用于HASH值比较,例如=,<> 操作符,不像BTREE索引需要从根节点到枝节点,最后才能访问到页节点这样多次IO访问,所以检索效率远高于BTREE索引。

为什么不默认采用HASH索引呢?

HASH只能用在=和<>上,所以功能受限,所以默认采用BTREE。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农编程进阶笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一文读懂 MySQL 索引
从上面定义中我们可以分析出索引本质是一个数据结构,他的作用是帮助我们高效获取数据,在正式介绍索引前,我们先来了解一下基本的数据结构
说故事的五公子
2022/10/30
6991
一文读懂 MySQL 索引
MySQL优化必备之执行计划explain,索引基本知识,索引数据结构推演
这条SQL执行包含了PRIMARY、DEPENDENT SUBQUERY、DEPENDENT UNION和UNION RESULT
行百里er
2020/12/02
1.3K0
MySQL优化必备之执行计划explain,索引基本知识,索引数据结构推演
MySQL索引由浅入深
MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构,索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要。索引优化应该是对查询性能优化最有效的手段了。索引能够轻易将查询性能提高好几个数量级。
三分恶
2021/03/05
7500
MySQL索引由浅入深
mysql之索引的工作机制
当db的量达到一定数量级之后,每次进行全表扫描效率就会很低,因此一个常见的方案是建立一些必要的索引作为优化手段,那么问题就来了:
一灰灰blog
2018/03/26
1.5K0
mysql之索引的工作机制
mysql可以靠索引,而我只能靠打工,加油,打工人!
面试的时候肯定会问这一个问题,mysql为什么会选择b+树作为索引呢?而不选择其他索引,例如b树?hash?
java小杰要加油
2021/05/13
4680
mysql可以靠索引,而我只能靠打工,加油,打工人!
解决程序慢,要学会预测表容积,不能一味地加索引
索引是应用程序设计和开发的一个重要方面。如果索引过多,应用程序中的更新、删除等操作会变慢,性能会受到影响;如果索引过少,对查询性能又会产生影响。
CSDN技术头条
2018/07/30
1.1K0
解决程序慢,要学会预测表容积,不能一味地加索引
不懂就问,MySQL索引是啥?
索引是帮助数据库高效获取数据的一种数据结构,是基于数据表创建的,它包含了一个表中某些列的值以及记录对应的地址,并且把这些值存在一个数据结构中,常见的有使用哈希表、B+树作为索引。
唔仄lo咚锵
2022/05/08
1.3K0
不懂就问,MySQL索引是啥?
MySQL常见四种索引的使用
提到MySQL优化,索引优化是必不可少的。其中一种优化方式 ——索引优化,添加合适的索引能够让项目的并发能力和抗压能力得到明显的提升。
星哥玩云
2022/08/17
6680
Mysql索引原理及应用场景
在工作当中,涉及到Mysql的查询,我们经常会遇到给某个表某个字段加索引的诉求,加上索引能够让我们的sql得到查询速度上的提升。但索引的原理是什么呢,他又是怎么工作的,需要开发者对基础知识有一定的了解。
benym
2022/08/30
1.3K0
Mysql索引原理及应用场景
mysql系列-索引
常见的数据结构中, 哈希表和二叉平衡树的查找效率分别是O(1)和O(logn), 是效率最快的两个, MySQL也毫不意外的使用了这两种数据结构来做索引。 MySQL索引的数据结构有两种选择, B+Tree 和 Hash。
用户6182664
2022/11/14
6650
mysql小结(1) MYSQL索引特性小结
mysql小结(1) MYSQL索引特性小结
Java架构师必看
2021/06/17
1.1K0
MySQL-索引;视图「建议收藏」
MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。
全栈程序员站长
2022/09/16
1.4K0
MySQL-索引;视图「建议收藏」
MySQL索引背后的数据结构及算法原理
摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。 文章主要内容分为三个部分。 第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引的数理基础。 第二部分结合MySQL数据库中MyISAM和
用户1263954
2018/06/22
1.2K0
MySQL8学习大纲总结
对MySQL8做了一个大致的学习汇总。第一个版本的大纲如下图。 MySQL8大纲(v1.0.0) 认识MySQL 定义 数据库:数据库是数据文件和其他文件的集合。 数据库实例:数据库实例是由进程和内存组成。数据库实例是真正操作数据库文件。 MySQL是一个单进程多线程架构的数据库。 架构体系 SQL执行分层 连接器->查询缓存->分析器->优化器->执行器->存储引擎 连接器 查询缓存(8.0版本已经弃用) 分析器 优化器 执行器 存储引擎 分层内容 执行顺序 体系结构 连接层 SQL层 网络通信 线
兔云小新LM
2022/06/08
7540
MySQL8学习大纲总结
MySQL查询索引分析
前一段时间修改数据表时,给一个表添加一个datetime字段,当时遇到了一个问题:我是否需要给该datetime字段上加索引呢?如果不给该字段加索引,当where语句中使用该字段时,会不会扫全表呢?如果给其加了索引,那么势必会带来一些开销,假如这个索引用不到的话,给其加了索引岂不是画蛇添足了呢?
kevindang
2018/06/17
2.2K0
MySQL索引背后的数据结构及算法原理
本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。
叫你不戴帽子
2018/06/03
2K0
MySQL索引背后的数据结构及算法原理
MySQL索引优化分析
为什么你写的sql查询慢?为什么你建的索引常失效?通过本章内容,你将学会MySQL性能下降的原因,索引的简介,索引创建的原则,explain命令的使用,以及explain输出字段的意义。助你了解索引,分析索引,使用索引,从而写出更高性能的sql语句。还在等啥子?卷起袖子就是干!
格姗知识圈
2019/07/19
1.2K0
MySQL索引优化分析
MySQL 索引管理与执行计划
  索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。
lyb-geek
2018/11/08
8100
相关推荐
一文读懂 MySQL 索引
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文