我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL is null 走不走索引?

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL is null 走不走索引?

网上很多的说法,都是说不能走索引。但其实是错误的。
其实也是又可能走索引的。
比如,select * from table where a = xxx or a is null;
通过explain 看这条sql的执行计划,type = ref_or_null,这条sql语句会查询两次,第一次按照查询 a = xxx,第二次再单独查询 a is null
为了更好的利用索引,索引列字段要设置为 NOT NULL 约束。有两个原因:
● 第一原因:索引列存在 NULL 就会导致优化器在做索引选择的时候更加复杂,更加难以优化,因为可为 NULL 的列会使索引、索引统计和值比较都更复杂,比如进行索引统计时,count 会省略值为NULL 的行。
● 第二个原因:NULL 值是一个没意义的值,但是它会占用物理空间,所以会带来的存储空间的问题,因为 InnoDB 存储记录的时候,如果表中存在允许为 NULL 的字段,那么行格式(opens new window)中至少会用 1 字节空间存储 NULL 值列表,如下图的紫色部分:
在这里插入图片描述

来源地址:https://blog.csdn.net/Sherlook_Holmes/article/details/130778635

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL is null 走不走索引?

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

mysql中or会走索引吗

在 mysql 中,or 查询是否使用索引取决于以下因素:索引覆盖范围、索引选择的顺序和索引类型。要优化 or 查询,可以采取以下步骤:1. 使用覆盖索引;2. 优化索引选择性;3. 使用查询改写;4. 使用带有 union 的多个查询。M
mysql中or会走索引吗
2024-05-01

mysql不走索引的情况有哪些

以下是一些可能导致MySQL不走索引的情况:1. 数据量太小:当数据量太小时,MySQL可能会选择全表扫描而不是使用索引。这是因为索引的开销可能超过了直接扫描整个表的开销。2. 数据分布不均匀:如果数据在索引列上的分布不均匀,那么索引可能不
2023-09-20

mysql varchar int 123 走索引吗?

结论:当MySQL中字段为int类型时,搜索条件where num="111" 与where num=111都可以使用该字段的索引。当MySQL中字段为varchar类型时,搜索条件where num="111" 可以使用索引,where num=111 不可
mysql varchar int 123 走索引吗?
2019-06-26

mysql哪些查询情况不走索引

这篇文章主要介绍“mysql哪些查询情况不走索引”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“mysql哪些查询情况不走索引”文章能帮助大家解决问题。mysql哪些查询情况不走索引1、索引列参与计算
2023-06-30

MySQL索引失效原因及SQL查询语句不走索引原因是什么

这篇“MySQL索引失效原因及SQL查询语句不走索引原因是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQL索引失
2023-03-07

delete in子查询不走索引问题分析

目录引言问题复现原因分析优化方案为什么加个别名就可以走索引了呢?总结引言文章开篇前,先问大家一个问题:delete in子查询,是否会走索引呢?很多伙伴第一感觉就是:会走索引。最近我们有个生产问题,就跟它有关。本文将跟大家一起探讨这个问题
2022-07-06

编程热搜

目录