一、基数:
     一个列中唯一键(Distinct_keys)的个数,如有一个100W行的表,性别列的基数为2 (select distinct gender from test),主键列的基数为100W(select distinct mid from test); 
 
二、选择性:
      基数/总行数所占的百分比,性别 2/100w * 100% 主键 100%  选择性越高 越有利于使用索引 
 
      20~30%就算是比较高了 
 
![]() 2.1、如何判断是一个索引创建的是好还是坏呢?
 2.1、如何判断是一个索引创建的是好还是坏呢? 
 
       就看他的基数和选择性 如果基数大选择性大 那么使用索引就比较好 
 
![]() 2.2、性别这个列使不使用索引?
 2.2、性别这个列使不使用索引?
 
      要看情况,从OLTP系统上来说 在选择性低的列上创建索引肯定不适合的, 
 基数/选择性高的列,适合建立B-Tree索引; 
 
 
      
 在OLAP系统中 
 基数低的列根据需求,有可能会建立bitmap索引 
 
![]() 2.3、如何查看列的选择性和基数呢?
 2.3、如何查看列的选择性和基数呢?
 
create table test as select * from dba_objects;
create index idx on test(owner); 
--最简单直接的写法是运行下面的语句 但可能会卡死 想象如果一张表30G 上千万行 而segment_size只有10G 
select count(distinct column_name),count(*) total_rows,count(distinct column_name) / count(*) * 100 selectivi
 
                   
                   
                   
                   本文详细探讨了Oracle数据库中基数、选择性及其对索引性能的影响。介绍了如何评估索引好坏的标准,特别是针对性别列是否需要建立索引的讨论,并讲解了如何查询列的选择性和基数。同时,对直方图的概念进行了概述,并指导如何查看数据库中的直方图信息,解答相关疑问。
本文详细探讨了Oracle数据库中基数、选择性及其对索引性能的影响。介绍了如何评估索引好坏的标准,特别是针对性别列是否需要建立索引的讨论,并讲解了如何查询列的选择性和基数。同时,对直方图的概念进行了概述,并指导如何查看数据库中的直方图信息,解答相关疑问。
           最低0.47元/天 解锁文章
最低0.47元/天 解锁文章
                           
                       
       
           
                 
                 
                 
                 
                 
                
               
                 
                 
                 
                 
                
               
                 
                 扫一扫
扫一扫
                     
              
             
                   1186
					1186
					
 被折叠的  条评论
		 为什么被折叠?
被折叠的  条评论
		 为什么被折叠?
		 
		  到【灌水乐园】发言
到【灌水乐园】发言                                
		 
		 
    
   
    
   
             
            


 
            