我自己总结的如下。
优点:是提高搜索速度,优化搜索性能。
- 创建了索引的列搜索速度会大大提升(主要目的)
- 确定列值的唯一性(作为唯一性约束)
- 加速表与表直接的连接
- 方便列的排序(因为索引的创建就已经进行了排序)
因此,适合使用索引的情况有:经常需要进行搜索的列,作为主键或外键的列,经常需要排序或者进行范围搜索的列。
缺点:耗费资源
- 创建索引和维护索引需要耗费大量时间,当数据量很大的时候,耗费的时间是巨大的
- 保存索引需要占用物理空间,每个索引都需要占用一定物理空间
- 当对数据进行增删改的时候,索引需要动态进行维护,导致修改的时间大大延长
因此,不适合使用索引的情况有:很少作为查询条件的列,数值种类很少的列(比如性别,同时也不是唯一值),数据量非常大的列(比如text,image类型),对修改性能要求高于查询性能要求的列。