如何查看mysql中全文索引的索引内容?

soat7uwm  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(430)

有没有可能看到 FULLTEXT INDEX 在mysql中?甚至可以直接查询索引(如 SELECT words FROM table.fulltext_index 它会返回所有索引词,只是为了举例说明)?
对于标量字段上的常规b树索引,这不是必需的,因为它们只是相同的值,只是为了加快查找速度(基本上)。但是在一个全文索引中发生了太多的“语言魔法”,以至于在做一个索引的时候很难知道索引中到底有什么 INSERT 到table上去。

332nm8kg

332nm8kg1#

myisam有办法,但你可能没有使用这个版本。它包括一种获取单词的方法。
innodb用单词+行号(可能是 PRIMARY KEY )+列(如果您同时索引多个列)+列的字节偏移量。我怀疑最后一个项目存储为commalist(或类似)。也就是说,我设想索引是这样的:

CREATE TABLE ft_index_for_table_x (
    word VARCHAR ...,
    pk ...,  -- possibly multiple columns
    col ...,  -- which column the word occurs in
    offsets ...,  -- list of byte offsets
    PRIMARY KEY(word, pk, col)
) ENGINE=InnoDB   -- but not really.

另外,注意有一堆临时文件;它们似乎在最终整合到上面的结构之前收集索引信息。
我还没有听说过检查索引的工具。
这有点道理,但我不认为这是一系列的字眼:

strings FTS*.ibd  |
    awk '/^[a-z]+$/'  |
    sort  |
    uniq -c  |
    sort -nr

最后一类得到他们与最频繁的第一;移除以按字母顺序获取它们。

相关问题