基数在 FULLTEXT 索引 MariaDB 中为 NULL
Cardinality is NULL in FULLTEXT index MariaDB
我在数据库 foo
table 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 | | |
+-------+------------+---------------------+--------------+-------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
但是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
.
我在数据库 foo
table 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 | | |
+-------+------------+---------------------+--------------+-------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
但是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
.