MySQL索引优化小记

有2种数据类型,一种重复率高、一种重复率低,选择这2种类型哪个建立索引好?为什么?

之前确实没考虑过这个问题,但觉得既然是使用空间换时间,数据结构本身重复率那么高索引的作用应该就不大了吧。

后来结束到家查看资料后,发现这个名词叫做"离散率"。对于DBA这个问题应该是最最基础的了。

建立索引的几个原则:

  1. wheregroup byon语句中出现的列。
  2. 最左前缀匹配。
  3. 离散度大的放到联合索引前面,比如a的离散度高于b,则使用index(a,b)。
  4. 索引列不参与计算。
  5. 索引字段越小越好。
  6. 尽量扩展索引而不是新建索引。(存疑)

索引的缺点:

  1. 额外占用磁盘,降低写操作性能。
  2. 修改表内容时候,索引需要更新。