MySQL的索引设计

前言

MySQL的索引能够有效提升SQL语句的查询效率,提高数据处理速度。但是索引不是越多越好,对于一些数据量较小的表,创建索引造成的时间和空间消耗可能会大于原本的查询语句的消耗。索引字段的选择对于SQL语句的查询效率也有很大的提升,对于一些区分度较低和不常使用的字段创建字段,将不能达到优化查询效率的结果。

选择值是唯一的字段建立索引

对于唯一性的列,创建索引的效果是最佳的,对于具有多个重复值的列,创建索引的效果是最差的。比如性别、婚姻状况、学历等这些分类列,就不需要建立索引,因为该字段中会有多个重复的值,索引效果比较差。对于年龄、得分等一些区分度很大的字段比较适合建立索引。对于表的主键,系统会自动创建的索引。

选择经常作为查询条件的字段建立索引

如果每个字段常用来做查询条件,因此该字段的查询速度会影响整个表的查询速度,因此,在这样的字段上建立索引,可以大大提高查询效率。

限制索引的数目

索引的数目不是越多越好,每个索引都需要占用磁盘空间,索引越多,需要的磁盘空间就越大,修改表时,对索引的重构和更新也会很麻烦。

长字段可以使用前缀索引

建立索引时,还应当考虑短索引原则,对于一些字段较大(VARCHAR(200))的不适合建立索引,因为创建该索引会导致索引字段长度过大,索引节点树高增加,I/O次数也会增加。如果非要对字符串较长的字段建立索引,可以考虑使用前缀索引,将字段的前10个字符设置索引,就会节省索引空间,提升效率。

为经常需要排序、分组和联合操作的字段建立索引

经常需要order by、group by、distinct和union等操作的字段,排序操作会浪费很多时间,可以为其建立索引,能够有效地避免排序操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值