基数报告为“1”,即使相应列存储了 2 个唯一值

Cardinality is reported as "1" even though there are 2 unique values stored for the corresponding column

我正在尝试通过调整索引来优化我的数据库。

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)。为什么?

PS。我确实表演了

analyze table my_table

在 运行 查询之前。

SHOW INDEXES中的"cardinality"是一个近似值。 ANALYSE() 得到准确的值,因为它是从 table.

的详尽扫描中得出的

前者用于决定如何优化查询。通常,低基数(无论是 1 还是 2)意味着该字段上的索引不值得使用。

这个问题你要去哪里?