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哪些情况下会忽略索引[通俗易懂]

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

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

(0)
上一篇 2022年2月13日 下午12:00
下一篇 2022年2月13日 下午1:00


相关推荐

  • mysql导入Excel表格中文表头_把一个表里的数据导入另一个表

    mysql导入Excel表格中文表头_把一个表里的数据导入另一个表一,Linux版本1.先把Excel的xls格式转为csv3.用notepad++转为uft8编码4.然后转为txt格式5.将本地文件上传到服务器上选择数据库5.创建表格式要跟Excel一样createtableclass(idvarchar(20),namevarchar(20),chinesevarchar(20),mathvarchar(20),englishvarchar(20),physicsvarchar(20)

    2026年2月10日
    5
  • 用Pytest+Allure生成漂亮的HTML图形化测试报告[通俗易懂]

    用Pytest+Allure生成漂亮的HTML图形化测试报告[通俗易懂]对于软件测试来说,测试报告是非常重要的工作产出。一个漂亮、清晰、格式规范的测试报告,能够减少开发人员和测试人员的沟通成本。本篇文章将介绍如何使用开源的测试报告生成框架Allure生成规范、格式统一、美观的测试报告。通过这篇文章的介绍,你将能够:-将Allure与Pytest测试框架相结合;-执行测试之后,生成Allure格式的测试报告。1、Allure测…

    2022年7月26日
    24
  • manus如何使用

    manus如何使用

    2026年3月15日
    2
  • UART接口定义_uart接口图片

    UART接口定义_uart接口图片认识UART接口嵌入式里面说的串口,一般是指UART口,但是我们经常搞不清楚它和COM口的区别,以及RS232,TTL等关系,实际上UART,COM指的物理接口形式(硬件),而TTL、RS-232是指的电平标准(电信号)。UART有4个pin(VCC,GND,RX,TX),用的TTL电平,低电平为0(0V),高电平为1(3.3V或以上)。COM口是我们台式机上面常用的口(下图)…

    2025年11月16日
    7
  • 职业炒股怎么操作_专业炒股的人天天都在干嘛

    职业炒股怎么操作_专业炒股的人天天都在干嘛转自http://blog.sina.com.cn/s/blog_4af4b1c20100f47u.html 一、我买哪只股票好?买你最熟悉的上市公司,同城的最好。记住,买卖时机大于选股。二、我持有的某某股票现在卖好吗?只要有赢利,任何时候抛都是好点。三、我准备借钱来炒股,好吗?借钱就等于是资金杠杆,你得有必胜的把握!这世界上利用杠杆在资本市场获大利的数不胜数。四、我准备专职炒股,好吗?以…

    2025年6月30日
    5
  • JAVA map排序实现

    JAVA map排序实现Map排序的方式有很多种,这里记录下自己总结的两种比较常用的方式:按键排序(sortbykey),按值排序(sortbyvalue)。1、按键排序jdk内置的java.util包下的TreeMap<K,V>既可满足此类需求,向其构造方法TreeMap(Comparator<?superK>comparator)传入我们自定义的比较器即可实…

    2022年7月15日
    20

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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