当前位置: 代码网 > it编程>数据库>Mysql > MySQL中的性别字段到底加不加索引

MySQL中的性别字段到底加不加索引

2024年05月28日 Mysql 我要评论
准备首先针对mysql 性别字段到底加不加索引,其实按照创建索引的原则之一 区别度高的情况下才会使用索引,为什么?区别度低难道就不能使用索引?区别度低难道使得索引失效了吗?给mysql的性别字段添加索

准备

首先针对mysql 性别字段到底加不加索引,其实按照创建索引的原则之一 区别度高的情况下才会使用索引,为什么?

区别度低难道就不能使用索引?区别度低难道使得索引失效了吗?

给mysql的性别字段添加索引,mysql到底是否会使用?

环境

mysql 5.7 & mysql8.0 两个版本最常用的,如果得到的结论是一致的,那么就摒弃版本不一样的问题。

mysql8.0 t1 数据量100w ;mysql5.7 sys_user 10w

测试

mysql8.0, 不加索引查询 ,select * from t1 where sex = ‘男’ ,耗时0.624s ,可以看到是全表扫描

mysql8.0, 性别 加索引查询 ,select * from t1 where sex = ‘男’ ,耗时1.305s,可以看到使用到了索引,并不是索引失效

mysql5.7, 不加索引查询 ,select * from t1 where sex = ‘男’ ,耗时1.006s,可以看到是全表扫描

mysql5.7, 加索引查询 ,select * from t1 where sex = ‘男’ ,耗时 1.098s,可以看到使用到了索引

总结

mysql 性别字段到底加不加索引,实际上与索引创建规则之一 区分度有关,性别字段假设有100w数据,50w男、50w女

区别度几乎等于 0 , select count(distinct sex)/count(*) from sys_user ,实际上对于性别字段不适合创建索引,是因为select * 操作,还得进行50w次回表操作

根据主键从聚簇索引中找到其他字段 ,这一部分开销从上面的测试来说还是比较大的,所以从性能角度来看 不建议性别字段加索引,加上索引并不是索引失效,而是回表操作使得变慢的

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com