mysql 重复率高字段 索引_数据重复率高于多少不适合建索引?

问题不好回答,任何理论值都要有前提的,也就是说给你一个论证后的值没有任何意义,教你一个办法:

不知道是否适用,我能想到你的应用场景有两种,分别说:

第一种:遇到了实际问题,不确定建索引是否合适,如果是这种情况,很简单,有测试环境,可以直接建索引测试,如果没有测试环境我们就用理论分析,知道方法也就不用纠结理论值是多少了,最简单的有索引和没有索引的情况,直接看执行计划,看走索引是如何定位数据的,比如index range scan和index fast full scan是有区别的,如果没有索引就是全表扫描,那么你只要实际测一下,看看执行时间哪个快就好了,说了半天还是回归到了sql优化,其实还有理论估算方法,我不想在这细说,简单提一下,根据你的数据量计算oracle会产生多少IO评估走索引和不走索引两种情况的执行计划,自己估算出代价,差异明显选择代价小的,差异不明显看具体业务。如果是这种情况,最好带着你的问题截图和实际数据来提问,会更有针对性。

第二种:这种场景是你不知道有哪些具体业务语句,只想单纯的对某个或者某些表建索引,想找个理论依据来创建索引,我觉得这种方式是不可取的,首先维护索引是有开销的,比如你在一个选择性很好的字段上建了索引,但是你的业务并没有使用到这个字段,所以索引很可能一辈子都用不上,那么选择性好不好就无所谓了,后期你可能会经历一个很痛苦的删索引的过程,建容易,删难。

所以总结一下还是一种,具体语句实际测试,看执行计划是否最优,有时候没有索引反而更快。看具体情况。

我是以Oracle为例来说的,其他数据库可能也不太了解。这里说的只是最常见的用法, 当然还有很多索引高级的玩法,这里没有考虑。

还有一种情况:你没有实际场景只是要问这个经验值或者理论值的话,我没有......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值