4条回答
默认
最新
基数会影响优化器对cost的评估,最简单的就是比如一个查询:
select * from test where id=1 and sex='male';
id和sex两个字段上都有单独的索引,而id列的基数大,sex列的基数小,那么数据库在评估执行计划的时候会考虑优先使用id列上的索引。id列的基数大,选择性好,那么在扫描的时候io量就少。最终评估出的cost就小。
评论
有用 0
我觉得不会,但是在基数小的字段上使用位图索引是能够提高查询速度的
标准索引是通过在索引中保存排序过的索引列以及对应的ROWID来实现的。若我们在基数小的列上建立标准索引的话,则其会返回大量的记录。
而当我们在创建位图索引的时候,在Oracle会对整个表进行扫描,并且会为索引列的每个取值建立一个位图。若内容相同,则在位图上会以一个相同的数字表示。此时,若这个字段的基数比较小的话,则若需要实现对整个字段的查询的话,效率就会非常的高。因为此时,数据库只要位图中数字相同的内容找出来即可。
评论
有用 0基数
一个列中唯一键(Distinct_keys)的个数,如有一个100W行的表,性别列的基数为2 (select distinct gender from test),主键列的基数为100W(select distinct mid from test);
选择性
基数/总行数所占的百分比,性别 2/100w * 100% 主键 100% 选择性越高 越有利于使用索引 20~30%就算是比较高了
1、如何判断是一个索引创建的是好还是坏呢?
就看他的基数和选择性 如果基数大选择性大 那么使用索引就比较好
基数的改变景响到的索引的选择性,肯定会影响查询速度。
以上为个人观战,如果不对的地方,仅供参考。
希望对你有所帮助。如果感觉答案满意,请点采纳,谢谢
评论
有用 0回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏


