- 排序二叉树:左子节点一定小于根结点,右子节点一定大于根结点,查找比较方便,节省一半的可能。但节点位于同一边时查找效率得不到提升,所以需要平衡化处理。即平衡二叉树。
- 平衡二叉树(左右子数高度差绝对值小于1,这样可以使得总共比较节点的次数不超过树的高度)
- B树:平衡的多叉查找。
- mysql是如何使用B树的?
innodb的数据是靠主键组织起来的,所以innodb下创建的表必须指定主键。Innodb辅助索引的叶子节点储存的不是地址,而是主键值。这样减少了出现行移动或者数据页分裂时辅助索引的维护工作。而MyISAM需要改变叶子节点中的地址。
innodb引擎下,数据记录保存在B+树的叶子结点,当插入新的数据时,如果主键值是有序的,它会把每一条记录都存在上一条记录后面,但如果主键使用的是无序的数值,如UUID,这样插入数据时innodb无法简单的插入到后面,这样写入性能差。
MyISAM