美文网首页
04 | 讲深入浅出索引(上)

04 | 讲深入浅出索引(上)

作者: carlclone | 来源:发表于2019-06-26 13:17 被阅读0次

04 | 讲深入浅出索引(上)
索引结构 : 哈希表 , 有序数组 , 查找树 (都是查找表)
哈希只能 equal , 数组和树都能euqal , range , 并且是有序的 , 所以可以二分
树的更新成本较数组低
二叉树是查找效率最高的 , 但是索引要存在磁盘里 , 所以都是用多叉树
100w节点的平衡二叉树 log100w=20 , 树高20 , 查询要访问20个数据块
磁盘随机读数据库需要10ms寻址时间
二叉树访问一行=20*10ms=200ms
N叉树减少树高度
innodb的int类型索引 , N为1200 , 若树高为4 1200^3=17亿 , 只需要访问3次磁盘 , 因为根节点在内存中 , 第二层也可能已经在内存中 , 则更少
其他类似的优化数据结构 : 跳跃表,LSM树?
主键索引叶子节点存的整行数据 , 也叫聚簇索引
非主键索引存的是主键ID , 成为二级索引
非主键索引需要多扫描一颗树 , 成为回表
如果插入在ROW5所在的数据页(<=ROW5),但是R5的数据页已经满了 , 此时需要申请新的数据页,挪一部分过去 , 成为页分裂
页分裂影响性能 , 还影响空间利用率
自增主键不会在中间插入,不挪动数据 , 因此没有页分裂
如果用身份证当主键(20)字节, 普通索引叶子节点需要存的空间就会变大 , int 4字节 , bigint 8字节
自增主键通常是更合理的选择
只有一个索引的表则可以用类似身份证当主键 类似K,V的场景
重建索引的目的是消除页分裂导致的性能和空间利用效率
重建主键索引不应该用
alter table T drop primary key;
alter table T add primary key(id);
两次操作都会重建整个表, 要用alter table T engine=InnoDB

评论 留言可以当做测试用例 看提问自己能不能解答

相关文章

  • 04 | 讲深入浅出索引(上)

    04 | 讲深入浅出索引(上)索引结构 : 哈希表 , 有序数组 , 查找树 (都是查找表)哈希只能 equa...

  • MySQL实战45讲--04 | 深入浅出索引(上)

    1、索引的出现其实是为了提高数据查询的效率,就行书的目录一样。 2、索引的常见模型有三种:hash表、有序数组、N...

  • 04 | 深入浅出索引(上)

    索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。 索引的常见模型 索引的出现是为了提高查询效率,但是实...

  • 04深入浅出索引(上)

    一句话简单来说,索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。对于数据库的表而言,索引其实就是它的“...

  • 04 | 深入浅出索引(上)

    一.索引的常见模型 索引的出现是为了提高查询效率,但是实现索引的方式却有很多种,所以这里也就引入了索引模型的概念。...

  • 四、讲深入浅出索引(上)

    索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。 4.1 索引的常见模型 索引的出现是为了提高查询效率...

  • MySQL系统学习(04):MySQL索引学习补充篇

    原文:MySQL系统学习(04):MySQL索引学习补充篇 前言 在上篇文章中MySQL系统学习(03):深入浅出...

  • SQL索引的作用(转载)

    深入浅出理解索引结构 实际上,您可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引...

  • 深入浅出索引(上)

    1.索引的作用:提高数据查询效率 2.常见索引模型:哈希表、有序数组、搜索树 3.哈希表:键 - 值(key - ...

  • 05 MySQL-初识MySQL-索引-下

    04 MySQL-初识MySQL-索引-上 篇中介绍了InnoDB索引的数据结构模型以及索引维护。本篇继续针对My...

网友评论

      本文标题:04 | 讲深入浅出索引(上)

      本文链接:https://www.haomeiwen.com/subject/qlbqcctx.html