MySql - 如何确定一个字段适合构建索引?

本文探讨了数据库中基数的概念,即唯一键的数量,以及它如何影响列的选择性。选择性高的列数据分布更均衡,有利于查询性能。当查询返回的数据量小于5%时建议使用索引,反之则推荐全表扫描。此外,回表操作在索引查询中的作用也被提及,高频率的回表可能降低SQL性能,此时应考虑全表扫描。了解这些原理有助于优化数据库查询策略。
摘要由CSDN通过智能技术生成

基数

某个列唯一键的数量叫作基数。某个列唯一键的数量叫作基数。

当查询结果是返回表中5%以内的数据时,应该走索引;当查询结果返回的是超过表中5%的数据时,应该走全表扫描。

选择性

基数与总行数的比值再乘以100%就是某个列的选择性。

当一个列选择性大于20%,说明该列的数据分布就比较均衡了。

当某个列基数很低,该列数据分布就会不均衡。数据分布不均衡会导致在查询该列的时候,要么走全表扫描,要么走索引扫描,这个时候很容易走错执行计划。

回表概念:当对一个列创建索引之后,索引会包含该列的键值以及键值对应行所在的rowid。通过索引中记录的rowid访问表中的数据就叫回表。回表一般是单块读,回表次数太多会严重影响SQL性能,如果回表次数太多,就不应该走索引扫描了,应该直接走全表扫描。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值