mysql之索引

送分小仙女□ 提交于 2020-10-24 20:41:04
  •  什么事索引:索引是帮助MySQL高级获取数据库的数据结构(数据结构)
  • 索引两大功能:
    • 排序:比如order by 
    • 快速查找 : where 条件
  • 索引分类
    • 主键索引:设定为主键后数据库会自动建立索引,innodb为聚簇索引
    • 单值索引:即一个索引只包含单个列,一个表可以有多个单列索引
    • 唯一索引:索引列的值必须唯一,但允许有空值                
    • 复合索引:即一个索引包含多个列(在数据库操作期间,复合索引比单值索引所需要的开销更小(对于相同的多个列建索引)

      当表的行数远大于索引列的数目时可以使用复合索引)


    •  
  • 哪些情况需要创建索引
    • 主键自动建立唯一索引
    • 频繁作为查询条件的字段应该创建索引(where 后面的语句)
    • 查询中与其它表关联的字段,外键关系建立索引
    • 单键/组合索引的选择问题,who?(在高并发下倾向创建组合索引)
    • 查询中排序的字段,排序字段若通过索引去访问将大大提高排序速度
    • 查询中统计或者分组字段
                  
  • 哪些情况不要创建索引
    • 表记录太少
    • 经常增删改的表
    • Why:提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。\n因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件
    • Where条件里用不到的字段不创建索引
    • 数据重复且分布平均的表字段,因此应该只为最经常查询和最经常排序的数据列建立索引。\n注意,如果某个数据列包含许多重复的内容,为它建立索引就没有太大的实际效果。
       
  •   
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!