美文网首页
!=是否走索引

!=是否走索引

作者: cybersword | 来源:发表于2019-01-14 15:12 被阅读0次

大多数介绍MySQL中SQL优化的文章会提到,尽量避免!=,因为不会走索引,那么实际上呢?

分析如下

  1. 如果是<>BETWEEN,那么很明显是走范围索引range
    !=是不是可以理解为<>的并集呢?
  2. 实际使用中,建了索引的字段,一般Cardinality高,意味着区分度高,才有意义。
    而大部分场景!=不走索引,很有可能只是因为不等于的数据占比很高,走索引不如全表扫描。
    从而导致普遍认为!=不走索引。
  3. 找到数据分布不均匀的字段,做实验即可验证。

实验如下

表中数据分布
执行计划和实际耗时

结论如下

!= 会走范围索引,效率取决于范围的大小。

相关文章

  • golang elasticsearch 索引操作API ---

    创建索引 删除索引删除blog索引 检测索引是否存在// 检测下weibo索引是否存在

  • elasticsearch判断索引是否存在

    一、判断索引是否存在指定索引名,判断指定的索引是否存在集群中 二、判断索引指定类型是否存在

  • Mysql慢查询如何优化 --- 2021-09-14

    检查是否走了索引,如果没有则优化sql,使用索引; 检查所使用的的索引,是否是最有索引; 检查所查字段是否都是必须...

  • MySQL8.0-隐藏索引(Invisible Indexes)

    本文问题 隐藏索引有什么特点? 如何隐藏索引? 如何查询索引是否隐藏? 如何控制优化器是否使用隐藏索引 MySQL...

  • [PHP] php数组元素

    (1)判断是否存在该索引 即使$arr["a"]的值是null,该索引也是存在的。 (2)判断索引是否被设置了 ...

  • ElasticSearch的Java操作

    java 连接ES 创建client链接 创建索引 检查索引是否存在,删除索引 检查索引存在 删除索引 Java操...

  • mongo相关操作

    查看是否走索引 索引常用命令 查看当前索引状态 创建普通的单列索引 创建多列索引 删除单个索引 删除所有索引 创建...

  • !=是否走索引

    大多数介绍MySQL中SQL优化的文章会提到,尽量避免!=,因为不会走索引,那么实际上呢? 分析如下 如果是<、>...

  • 4. Mysql技术内幕-索引和算法

    索引和算法 索引概述 B+索引 全文索引 哈希索引: mysql支持的hash索引是自适应的,不能认为干预是否在一...

  • 记录一次sql优化遇到的坑

    两个表join查询,却不走连接条件的索引。当索引无问题,sql也无问题时,就可以去看看这两个表连接字段的字符集是否...

网友评论

      本文标题:!=是否走索引

      本文链接:https://www.haomeiwen.com/subject/hctjdqtx.html