gpt4 book ai didi

mysql - 即使为相应列存储了 2 个唯一值,基数仍报告为 "1"

转载 作者:行者123 更新时间:2023-11-29 07:25:41 25 4
gpt4 key购买 nike

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

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 中的“基数”是一个近似值。 ANALYSE()获取准确的值,因为它是从表的彻底扫描中得出的。

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

你问这个问题的目的是什么?

关于mysql - 即使为相应列存储了 2 个唯一值,基数仍报告为 "1",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34634005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com