MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。

索引方法

Mysql的索引方法有两种,BTERR和HASH。

散列表(Hash Table)和B+Tree 都是一些常用的数据结构,再数据结构前篇中介绍过一些,关于散列表和树的数据结构,后续也会在《数据结构后篇》中总结一下。

Hash

Hash索引如何提高查询速度
Hash索引是将索引键通过Hash运算之后,将 Hash运算结果的 Hash 值和所对应的行指针信息存放于一个Hash表(可以是数组结构)中。 那很显然采用Hash索引,在不考虑Hash冲突的情况下,通过Hash索引的可以一次定位数据,效率要比 BTree高很多。

Hash索引缺陷
Hash函数对索引健运算后,索引无法保证与索引健值大小一致,所以Hash索引有明显缺陷,就是不支持范围查询;无法利用索引的数据来避免sql查询的排序运算;对组合索引而言因为是组合健值进行Hash运算,所以无法使用部分索引让组合索引生效。

Hash索引使用场景
那只需要做等值比较查询,而不包含排序或范围查询的需求,都适合使用哈希索引

B+Tree

B树(B-Tree)属于多叉树又名平衡多路查找树,那B+数属于改进版的B树,

B树跟B+树的不同点

B+ 树中的节点不存储数据,只是索引,而B树中的节点存储数据
B  树中的叶子节点并不需要链表来串联。

B+Tree如何提高查询速度
B+Tree利用平衡查找树的有序性和高效遍历性,和B+Tree构建的有限高度的多叉树,通过IO次数的降低和查询遍历效率的提高,来提高查询速度。

平衡查找树的特点比较简单,后续也会在《数据结构后篇》中总结一下

已区间查询为例,B+Tree数据结构中只需要定位到区间起点值对应在树中的结点,然后从这个结点开始,按照平衡查找树的遍历方法继续遍历,直到区间终点对应的结点为止,这期间遍历得到的数据就是满足区间值的数据。
类似于我们在《常用数据结构前篇》中提到的跳表的原理。利用局部数据,一层一层靠近查询数据。

B+Tree索引使用场景
Mysql数据库中使用最为频繁的索引类型,不仅仅在 MySQL中是如此,实际上在其他的很多数据库管理中BTREE索引也同样是作为最主要的索引类型

redis提高查询速度_面试小点-MySQL 的两种索引方法如何提高查询速度相关推荐

  1. mysql索引级别快慢_面试小点-MySQL 的两种索引方法如何提高查询速度

    MySQL 索引的建立对于 MySQL 的高效运行是很重要的,索引可以大大提高 MySQL 的检索速度. 索引方法 Mysql 的索引方法有两种,BTERR 和 HASH. 散列表(Hash Tabl ...

  2. mysql 统计查询总数_如何一眼识别MySQL选择哪种查询计划(上)

    导读 我在<IN字段查询多少个值最合适?>中讲到:MySQL基于索引的查询成本分析主要包含两个方案:扫描索引树和索引统计.那么在这一章节中,我将详细讲解MySQL优化器是如何通过这两种方案 ...

  3. mysql数据存储方式_数据存储在mysql的两种方式

    数据存储在mysql的两种方式 发布时间:2020-05-12 16:16:25 来源:亿速云 阅读:250 作者:三月 下文主要给大家带来数据存储在mysql的两种方式,希望这些内容能够带给大家实际 ...

  4. PDF文件怎么压缩小一点?这两种压缩方法很好用

    PDF文件怎么压缩的小一点呢?大家在办公过程中,PDF文件可能是最常见的文件之一,大家发送文件都会使用它.使用的次数多的小伙伴也许就会察觉到,当发送内存很大的PDF文件时,会耗费我们很长时间,发送和接 ...

  5. Android自定义分割线_水平及垂直分割线的两种实现方法

    很多时候我们在做Android开发的时候.需要设置Item和Item的分割线.尽管不是在ListView里面.我们也会使用到分割线来区分不同选项.达到条目清晰的目的.比如下图中使用了横向的分割线.有长 ...

  6. 我的小快排(两种分割方法)

    今天看到微博上有人转一篇文章,题目是<你问什么写不好快排>,看看自己多长时间能把快排写出来.结果,果然20分钟没写出来,本来以为明白原理,结果实现的出现各种问题,小 bug.最终花了半个点 ...

  7. QQ空间迁移_【Frame_relay子接口的两种配置方法】

    Frame relay子接口的两种配置方法 2009-05-18 17:31:39 配置Frame relay子接口 R1:R3 103:301 R2:R3 203:302 1,多点子接口R1 con ...

  8. 如何恢复被删短信_恢复iPhone短信的两种简单方法推荐

    随着生活水平不断提升,iPhone的普及率也在大大提升.除微信外,短信是最高频的即时沟通工具之一.有时,不小心将对方发来的重要短信误删,无法找到相应数据时,从iPhone上恢复已删除的短信就是大家最关 ...

  9. groupby索引有效吗_面试官:MySQL建索引需要遵循哪些原则呢?

    点击关注上方"SQL数据库开发", 设为"置顶或星标",第一时间送达干货 1.选择唯一性索引 唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录.例如 ...

最新文章

  1. 【linux】用过的shell命令
  2. MVC增删查改,从数据库到后台,到前端,整个复习一下
  3. 基于RTP的h.264视频传输系统(二)
  4. ​【机器学习】交通数据的时间序列分析和预测实战
  5. LightCounting预测以太网光模块市场未来5年18%增速
  6. ftp 文件服务器预览,web文件服务器 ftp 预览
  7. ms project 入门_Microsoft Project 2010入门
  8. 冒泡排序算法 (JAVA)
  9. 深度学习 keras_Keras深度学习教程
  10. Linux下命令积累
  11. 最新最全的云开发入门教程,微信小程序云开发,云函数,云数据库学习,微信小程序云开发扩展功能学习
  12. A Game of Thrones(60)
  13. 《UnityAPI.Vector3三维向量》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+Vector3+Lerp+Cross+Dot+Slerp+立钻哥哥++OK++)
  14. 敏捷顾问的MBTI体验:8个认知能力胜过4个字母组合
  15. 2016年美团校园招聘数据开发工程师笔试编程题
  16. 立体匹配(Stereo Matching)
  17. 天蝎项目整机柜服务器解决方案,天蝎整机柜服务器标准符合性测试已启动
  18. Android使用svg格式图片,并改变图片颜色
  19. Linux运维排查常见故障
  20. 做期货怎么才能赚钱吗(期货这样做才能赚钱)

热门文章

  1. module_init 详解
  2. java 雪花特效_java实现图片飘雪花的特效
  3. python心理学实验程序_psychopy coder模式编写心理试验程序 字符程序和记录反应时...
  4. python socket 发送十六进制_python用socket怎么发送一段二进制数据
  5. python 服务监控_python实现监控某个服务 服务崩溃即发送邮件报告
  6. 首次公开!阿里巴巴云原生实时数仓核心技术揭秘
  7. 史上最强《Java 开发手册》泰山版王者归来
  8. 什么是人机对话模型?阿里小蜜团队写了1.5万字
  9. 《CODM》的成功源自何处?TGA年度移动游戏的总结和思考
  10. 技术人员是如何分析游戏环境的? 《影之诗》牌组趋势分析