Mysql索引类型
- 主键索引。
- 唯一索引。
- 普通索引。
- 组合索引。
- 全文索引。
索引原则
- 最左匹配原则。
- 尽量选择区分度高的列作为索引。
- 索引列不能参与计算。
- 尽量扩展索引,不要新建索引,避免冗余。
- 连接列必须创建索引。
- order by, group by, distinct后的字段需要添加索引。
- 更新比较频繁的表中,尽量少建索引。
- 合理使用覆盖索引。
数据结构
普遍使用B+树,真实数据只存储在叶子节点,利于了操作系统的预读,每次IO读取的数据为一页,一般为4k或8k。
聚族索引和非聚族索引
聚族索引的叶节点就是数据节点,非聚族索引的叶节点仍然是索引节点。
聚族所以本身是按照物理顺序放置的,排序很快。
一张表,聚族索引只能有一个(一般是主键),因为保存了所有的数据行。