【发布时间】:2021-04-20 11:21:42
【问题描述】:
我在数据库foo 的表bar 的多个列上有一个FULLTEXT INDEX。
mysql -u root --password=pw -e "SHOW INDEX FROM foo.bar;" 的输出为:
+-------+------------+---------------------+--------------+-------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------+------------+---------------------+--------------+-------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| bar | 0 | PRIMARY | 1 | version_id | A | 153 | NULL | NULL | | BTREE | | |
| bar | 1 | malfunction_desc_id | 1 | malfunction_id | A | 153 | NULL | NULL | | BTREE | | |
| bar | 1 | created_by | 1 | created_by | A | 25 | NULL | NULL | | BTREE | | |
| bar | 1 | description | 1 | description | NULL | NULL | NULL | NULL | | FULLTEXT | | |
| bar | 1 | important_notice | 1 | important_notice | NULL | NULL | NULL | NULL | | FULLTEXT | | |
| bar | 1 | localization_text | 1 | localization_text | NULL | NULL | NULL | NULL | | FULLTEXT | | |
| bar | 1 | idx_ft_title | 1 | title | NULL | NULL | NULL | NULL | | FULLTEXT | | |
+-------+------------+---------------------+--------------+-------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
但表 bar 包含 153 个具有不同标题的元素。所以我的问题是为什么Cardinality NULL 在这里?能解释一下吗?
我也尝试重建索引,但没有任何改变:
mysql -u root --password=pw -e "ALTER TABLE foo.bar DROP INDEX title;"
mysql -u root --password=pw -e "ALTER TABLE foo.bar ADD FULLTEXT INDEX idx_ft_title (title);"
mysql -u root --password=pw -e "ANALYZE TABLE foo.bar;"
【问题讨论】: