programing

대응하는 컬럼에 2개의 고유값이 저장되어 있는데도 카디널리티가 "1"로 보고된다.

goodsources 2022. 11. 29. 21:49
반응형

대응하는 컬럼에 2개의 고유값이 저장되어 있는데도 카디널리티가 "1"로 보고된다.

인덱스를 조정하여 데이터베이스를 최적화하려고 합니다.

SHOW INDEXES FROM my_table

출력

Table     ...  Key_name    ...   Column_name  ...  Cardinality ...
---------------------------------------------------------------------
my_table  ...  idx_field1  ...    field1      ...      1       ...

하는 동안에

SELECT field1 FROM my_table PROCEDURE ANALYSE()\G

출력

*************************** 1. row ***************************
  Field_name: my_db.my_table.field1
  Min_value: ow
  Max_value: rt
  Min_length: 2
  Max_length: 2
  Empties_or_zeros: 0
  Nulls: 0
  Avg_value_or_avg_length: 2.0000
  Std: NULL
  Optimal_fieldtype: ENUM('ow','rt') NOT NULL
1 row in set (0.26 sec)

즉, 보고된 카디널리티(1)가 고유값(2)의 수와 같지 않습니다.왜일까요?

추신. 저는 공연을 했습니다.

analyze table my_table

를 참조해 주세요.

의 '카디널리티'SHOW INDEXES는 근사치입니다. ANALYSE()는 테이블의 완전 스캔에서 파생되므로 정확한 값을 가져옵니다.

전자는 쿼리를 최적화하는 방법을 결정하는 데 사용됩니다.일반적으로 낮은 카디널리티(1 또는 2)는 해당 필드의 인덱스를 사용할 가치가 없음을 나타냅니다.

당신은 이 질문을 가지고 어디로 가고 있습니까?

언급URL : https://stackoverflow.com/questions/34634005/cardinality-is-reported-as-1-even-though-there-are-2-unique-values-stored-for

반응형