행위

"선택도 카디널리티 Selectivity vs. Cardinality"의 두 판 사이의 차이

DB CAFE

(선택도 와 카디날리티 조회 SQL)
1번째 줄: 1번째 줄:
== 선택도 와 카디날리티 조회 SQL ==
+
== 선택도와 카디널리티 ==
 +
=== 선택도 ===
 +
# 오퍼레이션이 전체 로우중 몇개의 로우를 조회 할지 나타내는 0 과 1 사이의 값
 +
# 예를 들어 , 120개의 로우을 읽은 다음 18개의 로우를 반환한다면 18/120 = 0.15 (15%)
 +
# 선택도가 0에 가까울 수록 강하다(좋다) , 1에 가까울 수록 약하다(나쁘다)고 말한다.
 +
# where 절이 없이 테이블을 조회 하면 선택도는 1이 된다.
 +
=== 카디널리티 ===
 +
# 오퍼레이션에 의해서 조회된 로우의 수를 카디널리티라고 한다
 +
# 카디널리티 = 선택도 * Num_rows(처리된 로우 수)
 +
# where 절이 없이 테이블(10,000건)을 조회하여 10,000 중 2,601건이 조회 되면 카디널리티는 2601이 된다.(선택도는 0.2601)
 +
 
 +
=== 선택도 와 카디날리티 조회 SQL ===
 
<source lang=sql>
 
<source lang=sql>
 
select column_name
 
select column_name
13번째 줄: 24번째 줄:
 
</source>
 
</source>
  
* 선택도    : distinct값의 갯수 분에 1
+
* 선택도    : 1 / distinct값의 갯수
 
* 카디널리티 : 선택도 * 로우건수
 
* 카디널리티 : 선택도 * 로우건수
  
 
[[category:oracle]]
 
[[category:oracle]]

2024년 1월 19일 (금) 16:18 판

thumb_up 추천메뉴 바로가기


1 선택도와 카디널리티[편집]

1.1 선택도[편집]

  1. 오퍼레이션이 전체 로우중 몇개의 로우를 조회 할지 나타내는 0 과 1 사이의 값
  2. 예를 들어 , 120개의 로우을 읽은 다음 18개의 로우를 반환한다면 18/120 = 0.15 (15%)
  3. 선택도가 0에 가까울 수록 강하다(좋다) , 1에 가까울 수록 약하다(나쁘다)고 말한다.
  4. where 절이 없이 테이블을 조회 하면 선택도는 1이 된다.

1.2 카디널리티[편집]

  1. 오퍼레이션에 의해서 조회된 로우의 수를 카디널리티라고 한다
  2. 카디널리티 = 선택도 * Num_rows(처리된 로우 수)
  3. where 절이 없이 테이블(10,000건)을 조회하여 10,000 중 2,601건이 조회 되면 카디널리티는 2601이 된다.(선택도는 0.2601)

1.3 선택도 와 카디날리티 조회 SQL[편집]

select column_name
     , num_distinct
     , num_nulls
     , 1/num_distinct selectivity   -- 선택도 
     , round(1/num_distinct * t.num_rows, 2) cardinality   -- 카디널리티 
  from user_tables t
     , user_tab_columns c
 where t.table_name = :tbl
   and c.table_name = t.table_name
 order by column_id ;
  • 선택도  : 1 / distinct값의 갯수
  • 카디널리티 : 선택도 * 로우건수