• 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. 数据重复且分布平均要创建索引。
  • 相关阅读:
    UOJ309 UNR #2 排兵布阵
    BZOJ4860: [Beijing2017]树的难题
    CQOI2017 部分题解
    SDOI2017 Round1 Day2 题解
    记SCOI2017
    BZOJ3810: [Coci2015]Stanovi
    BZOJ4785: [Zjoi2017]树状数组
    「ZJOI2007」「LuoguP1169」棋盘制作(并查集
    「LuoguP4147」 玉蟾宫(并查集
    「LuoguP1402」 酒店之王(最大流
  • 原文地址:https://www.cnblogs.com/chaozhengtx/p/14451739.html
Copyright © 2020-2023  润新知