当前位置:首页 > database > mysql > 正文内容

MySQL数据库索引

淙嶙5年前 (2020-07-21)mysql1046

1、 什么是数据库索引

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

2、 为什么使用B+树作为数据库索引,而不选择B树,红黑树,二叉搜索树?

  • B+树是多路平衡查找树,并且所有数据都放在叶子节点,通过链表链接。
  • 与B树相比,B+树的查找时间稳定,由于数据存放在叶子节点,所以避免了中序遍历跨层寻找。
  • 与二叉搜索树相比,如果是有序集合,会退化成链表,二叉搜索树高度会随着数据量增大变大

3、 hash索引和B+树索引

对于单条查询来说,hash索引时间复杂度为O(1),但是对于多条数据查询,同时如果还需要排序,分组,比较的时候,树型结构的索引更加合适

4、数据库基本结构

  • InnoDB 存储引擎中,所有的数据都被逻辑地存放在表空间中,表空间(tablespace)是存储引擎中最高的存储逻辑单位,在表空间的下面又包括段(segment)、区(extent)、页(page),行(Row)
  • 每页默认大小为16k,每个 16KB 大小的页中可以存放 2-200 行的记录
  • 每次查询数据时,会按页加载数据到B树节点,磁盘读写并不是按需读取,而是按页预读,这就是磁盘预读,如果未来要读取的数据就在这一页中,可以避免未来的磁盘IO,提高效率。

5、数据库索引的类型

在Innodb中

  • 聚集索引 聚集索引中存放一行的所有记录,所有正常表有且仅有一个聚集索引,一般就是主键,表行记录按照聚集索引顺序存放的

  • 辅助索引 存放索引列以及存放一个用于查找对应列的“书签”,使用辅助索引查询对应主键,再通过聚集索引查询对应行记录

相关文章

sqlyog 快捷键

sqlyog 快捷键

连接Ctrl+M 创建新连接Ctrl+N 以当前连接属性创建新连接Ctrl+F4/Ctrl+W 断开当前连接Ctrl+Tab 切换到下一个连接Ctrl+Shift+Tab 切换到上一个连接Ctrl+1...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。