关于innodb:innodb索引的几个问题

13次阅读

共计 561 个字符,预计需要花费 2 分钟才能阅读完成。

从数据结构角度

1:B+ 树索引(o(logn)
2:hash 索引 (key=>value)
3:全文索引
4:R-tree 索引

物理角度

1:汇集索引
2:飞汇集索引

逻辑角度

1:主键索引
2:一般索引
3:惟一索引

为什么会抉择 B + 树数据结构来存储数据

在 B + 树中,非叶子节点上是不存数据的,仅存储键值。因为在数据中的页大小是固定的,Innodb 中页的默认大小是 16kb,如果不存储数据,那么节点就能够存储更多的键值,相应的树的节数更大,对于同样的数据量来说,须要的树高就会变低。如此一来查问数据的时候进行磁盘的 IO 次数就会缩小,晋升查问效率。
因为 B + 树的节数等于键值数量,假如 B + 树的一个结点能够存储 1000 个键值,那么 3 层的 B + 树能够存储 100010001000=10 亿个数据。并且个别节点是常驻内存的,所以查找 10 亿个数据,只有两次 IO
B+ 树的叶子节点中的索引数据是依照程序排序的,并且叶子节点间是通过双向链表进行链接

主键索引和一般索引的差异

主键索引

主键索引的叶子节点存的整行数据,主键索引也称为聚簇索引

非主键索引

非主键索引的叶子节点内容存在的主键的值,非主键索引也成为二级索引或是一般索引

基于主键索引和一般索引的查问有什么区别?

主键索引,索引查问进去间接就是查问的值
非主键索引,先搜寻查到主键索引,而后主键索引在搜寻一次。这个过程成为回表

正文完
 0