MySQL 数据库中索引的实现 和 建立索引的原则

1 索引的实现原理

索引是满足某种特定查找算法的数据结构,这种数据结构以某种方式指向数据,从而实现高效的查询操作。

对于不同的数据库引擎实现方式并不一样,MySQL 中常用的 MyISAM 和 IoonBD 引擎都是使用B+Tree 实现的,具有较高的搜索效率,但二者具体的实现存在着差别。

  1. MyISAM 中叶子节点的data域存放的是数据记录的地址,例如以主键建立索引,叶子节点的Key 是主键值,Value 是定位到主键这一行数据的具体地址。
  2. InnoDB 中叶子节点的data域直接存放完整的数据记录,但data域大小有一定限制,不是无限存放的。

注意:索引是存放在硬盘中,不是内存中,读取需要IO操作。

2 建立索引的原则

  1. 主键自动建立唯一索引;
  2. 频繁用于查询条件的字段;
  3. 查询中与其他表关联的字段,外键应该创建索引;
  4. 查询中排序的字段;
  5. 查询中统计或者分组字段;
    除以上外,
  6. 数据频繁更新的字段不要建立索引;
  7. where 条件里用不到的字段不要创建索引;
  8. 表记录太少不要创建索引;
  9. 数据重复且分布平均要创建索引。
posted @ 2021-02-26 13:06  阿政在努力  阅读(311)  评论(0编辑  收藏  举报