============================================
============================================
Explain已在上一章节详细介绍过了,这里只是为了让读者对Explain有个整体概念。
B+树可以说是B树的一种变形,它把数据都存储在叶结点,而内部结点只存关键字和孩子指针,因此简化了内部结点的分支因子,B+树遍历也更高效,其中B+树只需所有叶子节点串成链表这样就可以从头到尾遍历,其中内部结点是并不存储信息,而是存储叶子结点的最小值作为索引
B+树用于数据库和文件系统中,NTFS等都使用B+树作为数据索引,
1)有n棵子树的结点含有n个关键字,每个关键字都不会保存数据,只会用来索引,并且所有数据都会保存在叶子结点;
2)所有的叶子结点包含所有关键字信息以及指向关键字记录的指针,关键字自小到大顺序连接;
为什么说B+树比B树更适合做操作系统的数据库索引和文件索引?
(1)B+树的磁盘读写的代价更低
(2)B+树的查询更加的稳定
(3)B+树是B-树的变种(PLUS版)多路绝对平衡查找树,他拥有B-树的优势
(4) B+树扫库、表能力更强
(5)B+树的磁盘读写能力更强
(6)B+树的排序能力更强
B-Tree、B+Tree区别
Myisam
InnoDB
Myisam Vs InnoDB
正确的创建合适的索引 是提升数据库查询性能的基础
为什么要使用索引?
选择性
离散型
索引选择原则
聚簇索引和非聚簇索引
innodb的次索引指向对主键的引用 (聚簇索引)
myisam的次索引和主索引 都指向物理行 (非聚簇索引)
聚簇索引是对磁盘上实际数据重新组织以按指定的一个或多个列的值排序的算法。特点是存储数据的顺序和索引顺序一致。一般情况下主键会默认创建聚簇索引,且一张表只允许存在一个聚簇索引(理由:数据一旦存储,顺序只能有一种)。
在《数据库原理》一书中是这么解释聚簇索引和非聚簇索引的区别的:聚簇索引的叶子节点就是数据节点,而非聚簇索引的叶子节点仍然是索引节点,只不过有指向对应数据块的指针。
聚簇索引的优点:
聚簇索引的缺点:
全值匹配我最爱,最左前缀要遵守; 带头大哥不能死,中间兄弟不能断; 索引列上少计算,范围之后全失效; LIKE百分写最右,覆盖索引不写*; 不等空值还有OR,索引影响要注意; VAR引号不可丢, SQL优化有诀窍。