目的:通过mysql获取数据,检索数据的原理来理解索引,以及如何利用好索引。

由于篇幅问题,可能会连载几篇文章。

从mysql获取一条数据说起:

我们知道,电脑的系统在获取数据的时候会旋转磁盘,然后移动磁头,然后将盘片对应部分的数据取出。

但mysql的数据在磁盘中的位置可能不一定是连续,这样进行一次访问可能花费的开销比我们想想的要大很多,

所以我们想要提高查找速度,就一定要找一个其他方法提高检索速度(索引)。

正常索引结构都会有很多种:B-tree,Hash,位图索引等等。

前提说明:图中每个圆代表索引的1块内存区域。所以每访问一个圆(索引节点)都会产生一次IO。

因此产生的弊端:在磁头达到目标数据之前,每经过一个节点,都要产生一次IO,所以数据量增大时,节点的数量会逐渐增加。

就会使得IO次数增加。

红黑树在查找方面有所改观,每增加一个节点的同时,会经过一次平衡算法,将节点尽量分散开,

尽可能的减小红黑树的单边过于冗长。但随着数据量的增加也一样会使IO次数增加。

为了解决这个问题:mysql推出了优于前两种的(没有绝对的优)B+tree。

为了减少IO次数,mysql将一个Index的内存区域扩大成可以容纳n个根节点的大小(橘黄色区域)。

就是我们所熟知的B+Tree。

最新文章

  1. 正确地组织python项目的结构
  2. Android Studio 和 Gradle
  3. wget 增加单个文件下载限制大小
  4. 一起学CUDA(一)
  5. 你真的会玩SQL吗?实用函数方汇总
  6. powerScript脚本
  7. Fatal error: Call to undefined function mysql_connect()
  8. cocos2dx工程中接入支付宝sdk
  9. TortoiseGit - pull request
  10. Alamofire源码解读系列(十)之序列化(ResponseSerialization)
  11. java 连接数据库测试类
  12. 豹哥嵌入式讲堂:ARM开发中有用的文件(1)- source文件
  13. asp.net调用前台js调用后台代码分享
  14. 「Splay」普通平衡树模板
  15. 解决npm ERR! Unexpected end of JSON input while parsing near的方法汇总
  16. CRM WEB UI 02搜索跳转到详细界面
  17. suffix word ality ally an ancy ance an aneity out ~1
  18. <聪明的投资者(第四版点评)>读书笔记
  19. 飞机找不到,流量哪去了?记一次移动WAP网关导致的问题
  20. oracle 和 mysql 和区别

热门文章

  1. TCP/IP协议(5): IP(Internet Protocol) 协议 —— 连接各个网络的协议
  2. 【JS入门小游戏】01-骰子游戏
  3. LG P2839 [国家集训队]middle
  4. [BSR文摘] 如何解释CRP正常而多普勒超声显示关节炎活动的RA亚型
  5. Windows 注册表是什么
  6. windows pwn(一)
  7. 添加material ui库
  8. 从0搭建Vue3组件库(三): 组件库的环境配置
  9. 自己动手从零写桌面操作系统GrapeOS系列教程——8.x86介绍
  10. ftpget