数据库-mysql(1)-索引- MyISAM-.InnoDB

mac2024-03-16  37

1.什么是MyISAM-.InnoDB

    1.MyISAM 非聚集索引:索引和行记录是分开存储的。

                                            MyISAM 可以没有主键

               主键和普通索引是两棵独立的索引B+树、指针定位

      2.InnoDB 普通索引:索引与行记录是存储在一起的。趋势递增。

                                        没有单独区域存储行记录。

                 主键索引的叶子节点,存储主键,与对应行记录。(而不是指针)

2.为什么要设计索引?

         提升查找速度。

3.哈希比树快,为什么设计成树?

        哈希 复杂度O(1)

                            O(lg(n))

          因为有分组、排序、比较

          InnoDB 不支持哈希索引。

4. 数据库索引使用B+树

         4.1二叉树

         4.2 B树

             高度低 减少磁盘IO (局部性原理 高频的放一块)

            1.非叶子节点不存树 数据只存在同一层的叶子节点上。

               2.叶子之间增加了链表

          4.3 B+树

                   1.范围查找 Max min之后,中间叶子节点就是结果集

                    2.叶子节点 记录行磁盘存储;非叶子节点PK,内存存储

                  3.非叶子节点 B+存储更多索引

      存储大量的数据(5亿),高度3.索引(4G)

总结:

索引是为了查询用的是树索引 B+  5亿数据 3层 内存4G单点、有序、范围
最新回复(0)