数据索引学习(1)

索引一种排好序的快速查询的数据结构,用于排序和查询。索引是独立于数据的数据结构,占具了必定的物理存储,并会常常的性维护自身的数据。咱们日常所说的索引,若是没有特别指明,都是指BTree(不必定是二叉树)结构的索引。mysql

索引优点:查询和排序sql

索引的劣势:1.占具了必定的存储空间 2.对表的Insert,update,delete都要维护索引表 3.数据量大的表要花时间来研究创建最优秀的索引数据结构

mysql索引结构:BTree , R-Tree ,full-text 全文索引  ,Hash索引。默认使用BTree索引并发

mysql索引分类:单值索引 , 惟一索引 , 复合索引高并发

create [unique] index indexName on table(columname(length));
drop index indexName on table
show index from table

建立索引建议:性能

  • 一张表索引不超过5个
  • 在where 及 order by 涉及的列上考虑创建索引
  • 主键会自动创建惟一索引
  • 频繁做为查询条件的字段应该创建索引
  • 查询中与其它表关联的字段,外键关系创建索引
  • 单值/复合索引的选择问题--在高并发下倾向建立组合索引
  • 查询中排序的字段,排序字段若经过索引去访问将大大提升排序速度
  • 查询中统计或者分组的字段创建索引

不建索引状况mysql索引

  • 频繁更新的字段不适合建立索引
  • where条件里用不到的字段不用索引
  • 表中数据量少的没必要建立索引,mysql官方说数据量到500万的状况下性能开始降低。
  • 数据重复且分布平均的表字段不用索引,只为最常常查询和最常常排序的数据列创建索引。若是某列重复的内容太多,为其创建索引没有太大效果
相关文章
相关标签/搜索