mysql索引做什么?


本文摘自PHP中文网,作者little bottle,侵删。

数据库中的索引类似大学图书馆建书目索引,可以提高数据检索的效率,降低数据库的IO成本。MySQL在300万条记录左右性能便会开始逐渐下降,所以当遇到大数据量时建立索引是非常有必要的。

MySQL官方对索引的定义为:索引是帮助MySQL高效获取数据的数据结构。

我们可以简单理解为:快速查找排好序的一种数据结构。

Mysql索引主要有两种结构:B+Tree索引和Hash索引。

我们平常所说的索引,如果没有特别指明,一般都是指B树结构组织的索引(B+Tree索引)。索引如上图所示。

最外层浅蓝色磁盘块1里有数据17、35(深蓝色)和指针P1、P2、P3(黄色)。P1指针表示小于17的磁盘块,P2是在17-35之间,P3指向大于35的磁盘块。真实数据存在于子叶节点也就是最底下的一层3、5、9、10、13......非叶子节点不存储真实的数据,只存储指引搜索方向的数据项,如17、35。

查找过程:例如搜索28数据项,首先加载磁盘块1到内存中,发生一次I/O,用二分查找确定在P2指针。接着发现28在26和30之间,通过P2指针的地址加载磁盘块3到内存,发生第二次I/O。用同样的方式找到磁盘块8,发生第三次I/O。

真实的情况是,上面3层的B+Tree可以表示上百万的数据,上百万的数据只发生了三次I/O而不是上百万次I/O,时间提升是巨大的。

以上就是mysql索引做什么?的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

浅谈mysql join底层原理

详解mysql8.0​ 字典表增强

mysql 千万级大数据 sql 查询优化技巧详解

mysql如何允许外网访问设置

sqlite如何迁移到mysql脚本的实例介绍

mysql 主从数据不一致,提示: slave_sql_running no 的解决方法

mysql数据库如何创建数据表

mysql添加用户以及授权等操作详解

mysql悲观锁怎么实现?

mysql两种引擎的有什么区别

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...