1. 详细流程图

    尚硅谷MySQL高级_思维导图.pdf

    1. 优势 ```
    2. 类似于大学图书馆建书目索引 , 提高数据检索的效率 , 降低数据库的IO成本

    3. 通过索引列对数据进行排序 , 降低数据排序成本 , 降低了 CPU 的消耗 ```

    4. 劣势 ```

    5. 实际上索引也是一张表 , 该表保存了主键于索引字段 , 并指向实体表的记录 , 所以索引列也是要占空间的

    6. 虽然索引大大提高了查询速度 , 同时却会降低更新表的速度 , 如对表进行insert , update 和 delete; 因为更新表时 , MySQL 不仅要保存数据 , 还要保存一下索引文件每次更新添加了索引列的字段 , 都会调整因为更新所带来的键值变化后的索引信息

    7. 索引直说提高效率的一个因素 , 如果你的 MySQl 有大量数据的表 , 就需要花费时间研究建立优秀的索引 或优化查询语句 ```

    8. 哪些情况需要创建索引 ```

    9. 主键自动建立唯一索引

    10. 频繁作为查询条件的字段应该创建索引

    11. 查询中 与其他表关联的字段 , 外键关系建立索引

    12. 频繁更新的字段不适合创建索引

    13. where 中不用到的字段 不用创建索引

    14. 单键/组合索引的选择问题, who? ( 在高并发下倾向创建组合索引 )

    15. 查询中排序的字段 , 排序字段若通过索引去访问将大大提高排序速度

    16. 查询中统计或者分组字段 ```

    17. 哪些情况不需要创建索引 ```

    18. 表记录太少

    19. 进场增删改的表

    20. 数据重复且分布平均的表字段 , 因此应该只为最近常查询和最近常排序的数据列表建立索引

      1. 注意: 如果某个数据列包含许多重复的内容 , 为它建立索引就没有太大的实际效果

      ```