前言
MySQL的索引能够有效提升SQL语句的查询效率,提高数据处理速度。但是索引不是越多越好,对于一些数据量较小的表,创建索引造成的时间和空间消耗可能会大于原本的查询语句的消耗。索引字段的选择对于SQL语句的查询效率也有很大的提升,对于一些区分度较低和不常使用的字段创建字段,将不能达到优化查询效率的结果。
选择值是唯一的字段建立索引
对于唯一性的列,创建索引的效果是最佳的,对于具有多个重复值的列,创建索引的效果是最差的。比如性别、婚姻状况、学历等这些分类列,就不需要建立索引,因为该字段中会有多个重复的值,索引效果比较差。对于年龄、得分等一些区分度很大的字段比较适合建立索引。对于表的主键,系统会自动创建的索引。
选择经常作为查询条件的字段建立索引
如果每个字段常用来做查询条件,因此该字段的查询速度会影响整个表的查询速度,因此,在这样的字段上建立索引,可以大大提高查询效率。
限制索引的数目
索引的数目不是越多越好,每个索引都需要占用磁盘空间,索引越多,需要的磁盘空间就越大,修改表时,对索引的重构和更新也会很麻烦。
长字段可以使用前缀索引
建立索引时,还应当考虑短索引原则,对于一些字段较大(VARCHAR(200))的不适合建立索引,因为创建该索引会导致索引字段长度过大,索引节点树高增加,I/O次数也会增加。如果非要对字符串较长的字段建立索引,可以考虑使用前缀索引,将字段的前10个字符设置索引,就会节省索引空间,提升效率。
为经常需要排序、分组和联合操作的字段建立索引
经常需要order by、group by、distinct和union等操作的字段,排序操作会浪费很多时间,可以为其建立索引,能够有效地避免排序操作。