MYSQL哪些情况下会忽略索引[通俗易懂]

MYSQL哪些情况下会忽略索引

大家好,又见面了,我是全栈君。

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

使用“EXPLAIN sql语句”进行调试,查看possible_keys或key
possible_keys:可能应用的索引
key:实际使用的索引
MYSQL哪些情况下会忽略索引[通俗易懂]

哪些情况下索引会被忽略

  1. 前导LIKE 语句
    前导模糊查询不生效 (如 like ‘%XX’或者like ‘%XX%’)

//生效
explain select * from cartoon where `name` like '家里来了位道长大人%'
//不生效
explain select * from cartoon where `name` like '%555%'
  1. “or“ 条件

  2. “in“ 条件

  3. “<>“ 不等于判断

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

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

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

MYSQL索引类型

索引类型

1. 普通索引 (index)

2. 唯一索引 (unique)

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

3. 主键索引 (primary key)

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

4. 组合索引

ALTER TABLE table_name ADD INDEX index_name ( column1column2column3 )

5. 全文索引 (fulltext)

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

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

2种索引算法

BTREE算法

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

HASH算法

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

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

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

MYSQL哪些情况下会忽略索引[通俗易懂]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/111899.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • spel表达式注入[通俗易懂]

    spel表达式注入[通俗易懂]使用parseExpression方法将字符串表达式转换为Expression对象;ParserContext接口用于定义字符串表达式是不是模板,及模板开始与结束字符;

  • 安装VMware Tools选项显示灰色的正确解决办法

    安装VMware Tools选项显示灰色的正确解决办法百度了一天,重新安装了vm,在csdn逛了又逛,结合无数篇大神文章,最后自己成功琢磨出了真正能点亮灰色按钮的方法。简单实在,大神们的方法实在千秋万变,一个比一个复杂,最后只能实现成功拖拽,而复制粘贴却还是不行。首先问题如下:解决办法如下:1.关闭虚拟机;2.在虚拟机设置分别设置CD/DVD、CD/DVD2和软盘为自动检测三个步骤;3.再重启虚拟机,灰色字即点…

  • 面试:最易被忽略的12种高级错误

    面试:最易被忽略的12种高级错误

  • Linux文件系统详解

    从操作系统的角度详解Linux文件系统层次、文件系统分类、文件系统的存储结构、不同存储介质的区别(RAM、ROM、Flash)、存储节点inode。本文参考:http://blog.chinaunix.net/uid-8698570-id-1763151.htmlhttp://www.iteye.com/topic/816268http://soft.chinabyte.com/os/142…

  • zookeeper入门教程_kubernetes github

    zookeeper入门教程_kubernetes githubzookeeperwatcher架构zookeeper 配置中心分布式ID分布式锁集群搭建数据一致性协议:zab协议Zookeeper Leader选举Observer角色及其配置watcher架构客户端首先将Watcher注册到服务器,同时将Watch对象保存到客户端的Watch管理器中。当Zookeeper服务器监听到的数据发生变化时,服务器会通知客户端,接着客户端的Watch管理器会触发相关的Watcher来回调响应处理逻辑,从而完成整体的数据发布/订阅流程。javaAPIJava

  • Java文件上传详解

    Java文件上传详解Java文件上传详解文件上传和下载准备工作使用类介绍代码编写文件上传和下载在Web应用中,文件上传和下载功能是非常常用的功能,这篇博客就来讲一下JavaWeb中的文件上传和下载功能的实现。准备工作对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的。一般选择采用apache的开源工具common-fileupload这个文件上传组件。common-fileupload是依赖于common-io这个包的,所以还需要下载这个包。首先下载最新的jar包https://mvnr

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号