基数在 FULLTEXT 索引 MariaDB 中为 NULL

Cardinality is NULL in FULLTEXT index MariaDB

我在数据库 foo table bar 的多个列上有一个 FULLTEXT INDEXmysql -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   |         |               |
+-------+------------+---------------------+--------------+-------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+

但是tablebar统计了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;"

您似乎有 4 个单独的 FULLTEXT 索引,4 列中的每一个?您是否打算对列的组合使用单个索引?

FULLTEXT 的基数未计算且不会使用。假设 FT 指数比任何其他指数都更有用。所以,它首先被使用(当 AND'd 与其他东西一起使用时);并且任何其他 WHERE 子句都不会使用 INDEXes.