哈希表:只适用等值查询。
有序数组:在等值查询和范围查询场景中的性能就都非常优秀。等值:O(log(N))。
二叉树:不如N叉树。以InnoDB的一个整数字段索引为例,这个N差不多是1200。这棵树高是4的时候,就可以存 1200的3次方个值,这已经17亿了。考虑到树根的数据块总是在内存中的,一个10亿行的表上一 个整数字段的索引,查找一个值最多只需要访问3次磁盘。
- 索引分为主键索引和非主键索引
- 主键索引的叶子节点存的是整行数据。非主键索引的叶子节点内容是主键的值。非主键查询:现找到主键再用主键查询。所以尽量使用主键查询。
InnoDB用B+树,分裂操作费时。
自增主键的好处:
- 每次插入一条新记录,都是追加操作,都不涉及到挪动其他记录,也不会触发叶子节点的分裂。
- 自增主键占内存小。
- 有没有什么场景适合用业务字段直接做主键的呢?还是有的。比如,有些业务的场景需求是这样 的:KV场景。由于没有其他索引,所以也就不用考虑其他索引的叶子节点大小的问题。这时候我们就要优先考虑上一段提到的“尽量使用主键查询”原则,直接将这个索引设置为主键, 可以避免每次查询需要搜索两棵树。



