最近在网上看到 MySql

关于 NULL 的文章

有几个值得争议的观点,我们一起看看

● 准备工作

MySql 版本 5.7,InnoDB 存储引擎,

表 test 数据量 10 w,

其中 a ,b,c 都是单列索引,都可以为 NULL,

a 列中 99 % 为 NULL,b 列中 10 % 为 NULL ,c 列中 90 % 为 NULL

● sql 语句样例

其中 a 可换成 b 或者 c

● 网友观点

观点 1 :当 where 条件中出现 IS NULL 或者 IS NOT NULL,索引失效

观点 2 :含有 NULL 的列不能创建索引,B + 树不能存储 NULL 值


● 通过 explain 命令分析

a 列中 99 % 为 NULL,b 列中 10 % 为 NULL ,c 列中 90 % 为 NULL

表1

从上述 sql 测试结果看:

● 当 where 条件中出现 IS NULL 或者 IS NOT NULL,索引失效。这句话是不正确。


关于索引是否存储 NULL 值?

● 反方:索引不存储 NULL值。

① 从表 1 中,当执行 explain 序号 1 时,使用了索引。在 表中存在大量 NULL 的情况下,去索引查询,然后再回表查询(一条条),效率还不如全表扫描(加载一个块)。

② 从表 1 中,当执行 explain 序号 3 或者 4 时,如果索引存储 NULL值,那么explain Extra 信息应该是 Using index,而实际情况是Using where;Using index,说明需要回表查询。

● 正方:索引存储 NULL 值。

如果 NULL 值不存储在索引树中,为什么会在 where IS NULL 条件下会去走索引,走索引说明定位到了为 NULL的值,至于反方所说的第二点,为什么明明是覆盖索引,Extra 不显示 Using index 的问题,因 NULL 是一种特殊的值,在索引树中是经过复杂计算的,需要回表查询。

>>>Python 之 MySql“未解之谜”13--都是 NULL 惹的祸(上)

where显示null行_Python 之 MySql“未解之谜”14-- 都是 NULL 惹的祸(下)相关推荐

  1. hibernate 复合主键 根据主键删除_Python 之 MySql“未解之谜”11--主键 id 那些事

    主键 id 用自增和 uuid 有什么区别? ● uuid 有 16 个字节,比 int(4 byte)和 bigint(8 byte)占用更多存储空间 有大量数据的时候 uuid 主键不会像自增主键 ...

  2. rust月球服务器名字_月亮的十大未解之谜

    关于月亮的十大未解之谜至今仍然无法解开,月亮未解之谜是人类科学的一大探索,古往今来,为了探索月亮的奥秘,人类付出了巨大的努力.月亮的十大未解之谜你都有了解过吗?今天小编给大家准备了月亮的十大未解之谜. ...

  3. 很多未解之谜终于有答案了——2018年JVM生态系统报告出炉

    在Java开发者中,一直存在着很多鄙视链.如: IntelliJ → Eclipse → NetBeans Unix → Linux → Mac OS→ Windows → DOS Emacs → V ...

  4. 2017互联网十大未解之谜,你能回答几个?

    0关注「实验楼」,每天分享一个项目教程 互联网行业发生许多重大事件,比如微信小程序上线.顺丰菜鸟互撕.共享单车接连倒闭.乐视危机发酵.无人超市崛起.求职少年李文星之死.京东腾讯入股唯品会等.在互联网的 ...

  5. 深度丨AI界的七大未解之谜:OpenAI丢出一组AI研究课题

    今天,OpenAI在官方博客上丢出了7个研究过程中发现的未解决问题. OpenAI希望这些问题能够成为新手入坑AI的一种有趣而有意义的方式,也帮助从业者提升技能. OpenAI版AI界七大未解之谜,现 ...

  6. AI界的七大未解之谜:OpenAI丢出一组AI研究课题

    来源:三体智讯 今天,OpenAI在官方博客上丢出了7个研究过程中发现的未解决问题. OpenAI希望这些问题能够成为新手入坑AI的一种有趣而有意义的方式,也帮助从业者提升技能. OpenAI版AI界 ...

  7. 难道这又是个未解之谜?--- 关于DLL中使用ADODATASET出错的问题

    难道这又是个未解之谜?--- 关于DLL中使用ADODATASET出错的问题 Delphi / Windows SDK/API http://www.delphi2007.net/DelphiAPI/ ...

  8. 一个常见的物理现象,直今还是未解之谜!

    全世界只有3.14 % 的人关注了 爆炸吧知识 在我们的日常生活中存在着很多有趣的物理现象, 科学家对这些现象进行深入研究后,可以通过这些现象延伸,从而在前沿科技发展上得到很大的帮助,甚至去解决宇宙中 ...

  9. 山东科技大学c语言完全题库,“山东科技大学十大未解之谜”之完全解答

    "山东科技大学十大未解之谜"之完全解答 (2012-04-24 13:53:36) 标签: 娱乐 当我还是一枚小正太刚刚进入山科大的时候,我就看到过这些未解之谜,现在每每看到童鞋们 ...

最新文章

  1. [elk]kafka_elk
  2. 人员信息管理系统练习
  3. [转]Windows Shell 编程 第十三章 【来源:http://blog.csdn.net/wangqiulin123456/article/details/7988004】...
  4. 前端学习(1881)vue之电商管理系统电商系统之双层for循环渲染数据
  5. VMware虚拟机下安装Ubuntu16.04镜像完整教程
  6. 图片服务 - thumbor安装
  7. 泰森中国宣布与阿里云达成战略合作
  8. 【解决方案】: hyper-v 导入虚拟机报这个错误 32784
  9. 存款100万能退休了吗?
  10. 手机压缩包删除有什么后果?
  11. file_put_contents记录的日志内容丢失
  12. jar脱壳_软件脱壳 - Rannie` - 博客园
  13. redis 持久化和恢复
  14. 聚观早报 | 嘀嗒出行重启赴港IPO;饿了么到店业务将与高德合并
  15. c语言——输入一个字符串,将其逆序输出
  16. 机器学习:非负矩阵分解(NMF)
  17. 埃及通信和信息技术部使用 OpenText ECM 内容服务平台为电子政务转型奠定基础
  18. java判断唯一性_java 后台验证数据唯一性
  19. 『往事』之---我的童年少年时代
  20. 前端必备工具大全------强推!!!

热门文章

  1. 关于 Cypress 同界面元素交互的讨论
  2. SAP Spartacus category在breadcrumb里显示不正确的一个问题
  3. SAP WebClient UI overview页面里assignment block的可见性分析技巧
  4. JDK安全证书的一个错误消息 No subject alternative names present的解决办法
  5. SEGW activation check bypass via debugging
  6. SAP Cloud for Customer根据模型某字段进行OData的搜索操作
  7. ComponentBase.createMetaData and manifest.json oRoute
  8. SAP UI5里的senderActive标志位
  9. 如何通过Fiori后台调试的方式找到gateway系统的ID
  10. SAP Leonardo机器学习如何获取模型存储的实际地址