INDEX_CARDINALITY 함수는 테이블에서 인덱스 카디널리티(cardinality)를 반환한다. 인덱스 카디널리티는 인덱스를 정의하는 고유한 값의 개수이다. 인덱스 카디널리티는 다중 컬럼 인덱스의 부분 키에 대해서도 적용할 수 있는데, 이때 세 번째 인자로 컬럼의 위치를 지정하여 부분 키에 대한 고유 값의 개수를 나타낸다.
리턴 값은 0 또는 양의 정수이며, 입력 인자 중 하나라도 NULL이면 NULL을 반환한다. 입력 인자인 테이블이나 인덱스가 발견되지 않거나 key_pos가 지정된 범위를 벗어나면 NULL을 리턴한다.
첫 번째와 두 번째 입력 인자인 테이블, 인덱스 이름은 NCHAR나 VARNCHAR 타입으로 전달할 수 없다.
INDEX_CARDINALITY(table, index, key_pos)
CREATE TABLE t1( i1 INTEGER ,
i2 INTEGER not null,
i3 INTEGER unique,
s1 VARCHAR(10),
s2 VARCHAR(10),
s3 VARCHAR(10) UNIQUE);
CREATE INDEX i_t1_i1 ON t1(i1 DESC);
CREATE INDEX i_t1_s1 ON t1(s1(7));
CREATE INDEX i_t1_i1_s1 on t1(i1,s1);
CREATE UNIQUE INDEX i_t1_i2_s2 ON t1(i2,s2);
INSERT INTO t1 VALUES (1,1,1,'abc','abc','abc');
INSERT INTO t1 VALUES (2,2,2,'zabc','zabc','zabc');
INSERT INTO t1 VALUES (2,3,3,'+abc','+abc','+abc');
SELECT INDEX_CARDINALITY('t1','i_t1_i1_s1',0);
index_cardinality('t1', 'i_t1_i1_s1', 0)
===========================================
2
SELECT INDEX_CARDINALITY('t1','i_t1_i1_s1',1);
index_cardinality('t1', 'i_t1_i1_s1', 1)
===========================================
3
SELECT INDEX_CARDINALITY('t1','i_t1_i1_s1',2);
index_cardinality('t1', 'i_t1_i1_s1', 2)
===========================================
NULL
SELECT INDEX_CARDINALITY('t123','i_t1_i1_s1',1);
index_cardinality('t123', 'i_t1_i1_s1', 1)
=============================================
NULL