索引 数据结构
二叉树 从根节点查找数据,左边的数据小于根节点的数据,右边的数据大于根节点的数据
红黑树 平衡二叉树
Hash表
B-Three 叶子节点具有相同的深度,叶节点指针为空,所有索引元素不重复,节点中的所有数据索引从左到右一次递增
B+Three 叶子节点不存data,只存索引,可以放更多索引,叶子节点包含所有索引字段,叶子节点使用指针连接,提高区间访问性能
一个叶子节点的大小是16kb
大部分时间在加载数据到内存,在内存中二分查找数据很快(数据结构主要是减少磁盘io)
搜索引擎 MyISAM
InnoDB 聚集索引 叶子节点包含完整的数据记录(数据跟索引不在同一个表中)
innoDB建表为什么建议添加主键?整型自增
用于维护b+tree (不见索引会挑选一列不同的来维护,否则就会增加一个隐形的类维护索引) 整型便于比较大小(uuid比较大小麻烦)
自增主键
hash不支持范围查找,存在hash冲突,效率比b的索引相对快一点
复合索引的工作原理?
索引是排好序的数据结构
最左前缀原理(排好序的)