【问题标题】:Cardinality is NULL in FULLTEXT index MariaDB全文索引 MariaDB 中的基数为 NULL
【发布时间】:2021-04-20 11:21:42
【问题描述】:

我在数据库foo 的表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   |         |               |
+-------+------------+---------------------+--------------+-------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+

但表 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;"

【问题讨论】:

    标签: mysql mariadb innodb


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-10
      • 2016-05-13
      • 2021-05-18
      • 2021-12-19
      • 2020-05-06
      • 2020-04-05
      • 2021-01-15
      相关资源
      最近更新 更多