分享更有价值
被信任是一种快乐

Oracle的基数与选择性分析

文章页正文上

本篇内容主要讲解“Oracle的基数与选择性分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle的基数与选择性分析”吧!一个列免费主机域名中唯一键(Distinct_keys)的个数,如有一个100W行的表,性别列的基数为2 (select distinct gender from 免费主机域名test),主键列的基数为100W(select distinct mid from test); 基数/总行数所占的百分比,性别 2/100w * 100% 主键 100% 选择性越高 越有利于使用索引 20~30%就算是比较高了
就看他的基数和选择性 如果基数大选择性大 那么使用索引就比较好 要看情况:从OLTP 系统上来说在选择性低的列上创建索引肯定不适合的,基数/选择性高的列,适合建立B-Tree索引; 在OLAP系统中基数低的列根据需求,有可能会建立bitmap索引创建一个test测试表,createtabletestasselect*fromdba_objects; create index idx_owner on test(owner); create index idx_object_name on test(object_name); 查看owner列和object_name列的基数select count(distinct owner),count(distinct object_name) from test; 查看列的基数和选择性,可以使用如下脚本selectcount(distinctcolumn_name),count(*)total_rows,count(distinctcolumn_name)/count(*)*100selectivityfromtable_name;
我们查看test表的owner的基数和选择性select ,count(*) total_rows,count(distinct owner) / count(*) * 100 selectivity from test;count(distinct owner)列为基数total_rows列为总行数selectivity列为选择性
在做SQL优化的时候,不要急忙运行上面SQL,首先应该检查表的segment_size有多大,如果表的segment_size过大(比如超过SGA的buffer_cache),你要考虑运行上面SQL 是否对你当前的系统有影响,如果是测试环境,无所谓,如果是生产环境,要小心谨慎。–其实建议使用统计信息表(dba_tab_col_statistics 、dba_tables )里的信息来查看选择性和基数,这里注意我们首先要收集统计信息,否则返回的列是空值。select a.column_name, b.num_rows, a.num_distinct Cardinality, round(a.num_distinct / b.num_rows * 100, 2) selectivity, a.histogram, a.num_buckets from dba_tab_col_statistics a, dba_tables b where a.owner = b.owner and a.table_name = b.table_name and a.owner = upper(‘&owner’) and a.table_name = upper(‘&table_name’) and a.column_name = upper(‘&column_name’); select a.OWNER, a.INDEX_NAME, a.TABLE_NAME, a.DISTINCT_KEYS Cardinality, a.NUM_ROWS, round(a.DISTINCT_KEYS / NUM_ROWS * 100, 2) selectivity from dba_ind_statistics a where A.OWNER = upper(‘&owner’); selectivity




如果统计信息有可能不是最新的最好使用下面的语句select table_name,index_name,round(distinct_keys/num_rows * 100, 2) selectivity from user_indexes; 但是选择性低的列也不一定不需要建索引要根据业务来比如有7W行记录 SCOTT的有23行如果经常根据SCOTT查要建立索引到此,相信大家对“Oracle的基数与选择性分析”有了更深的了解,不妨来实际操作一番吧!这里是云技术网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

相关推荐: 怎么理解Oracle集群因子

本篇内容介绍了“怎么理解Oracle集群因子”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 集群因子(ClusteringFactor)是如果通过一个索引扫描一…

文章页内容下
赞(0) 打赏
版权声明:本站采用知识共享、学习交流,不允许用于商业用途;文章由发布者自行承担一切责任,与本站无关。
文章页正文下
文章页评论上

云服务器、web空间可免费试用

宝塔面板主机、支持php,mysql等,SSL部署;安全高速企业专供99.999%稳定,另有高防主机、不限制内容等类型,具体可咨询QQ:360163164,Tel同微信:18905205712

主机选购导航云服务器试用

登录

找回密码

注册