mysql的索引

索引是什么

  1. mysql索引: 是一种帮助mysql高效的获取数据的数据结构,这些数据结构以某种方式引用数据,这种结构就是索引。可简单理解为排好序的快速查找数据结构。如果要查“mysql”这个单词,我们肯定需要定位到m字母,然后从下往下找到y字母,再找到剩下的sql。

索引分类

  1. 单值索引:一个索引包含1个列 create index idx_XX on table(f1) 一个表可以建多个。
  2. 唯一索引: 索引列的值必须唯一,但允许有空值 create unique index idx_XX on table(f1)
  3. 复合索引: 一个索引包含多个列 如:create index idx_XX on table(f1,f2,..)

索引结构

  1. BTree
  2. Hash索引
  3. full-text全文索引:

什么情况建立索引

  1. 主键自动建立唯一索引
  2. 频繁作为查询条件的字段因该创建索引
  3. 查询中与其他表关联的字段,外键关系建立索引
  4. 频繁更新的字段不适合建立索引
  5. where条件里用不到的字段不建立索引
  6. 单键/复合索引的选择(高并发下倾向复合)
  7. 查询中排序的字段因建立索引
  8. 查询中统计或分组字段

什么情况建不立索引

  1. 频繁增删改的表
  2. 表记录太少
  3. 数据重复且分布平均的表字段。(重复太多索引意义不大)

sql优化

可以参考:mysql的sql优化