Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  The INFORMATION_SCHEMA INNODB_FT_INDEX_TABLE Table

28.4.19 INFORMATION_SCHEMA INNODB_FT_INDEX_TABLE 表

INNODB_FT_INDEX_TABLE 表提供了关于反向索引的信息,该索引用于处理 FULLTEXT 索引的文本搜索对 InnoDB 表。

该表最初为空。在查询它之前,设置 innodb_ft_aux_table 系统变量的值为包含 FULLTEXT 索引的表的名称(包括数据库名称)(例如,test/articles)。

有关相关使用信息和示例,请参阅 第 17.15.4 节,“InnoDB INFORMATION_SCHEMA FULLTEXT 索引表”

INNODB_FT_INDEX_TABLE 表具有以下列:

  • WORD

    FULLTEXT 索引的列中提取的单词。

  • FIRST_DOC_ID

    该单词在 FULLTEXT 索引中的第一个文档 ID。

  • LAST_DOC_ID

    该单词在 FULLTEXT 索引中的最后一个文档 ID。

  • DOC_COUNT

    该单词在 FULLTEXT 索引中的出现次数。同一个单词可以在缓存表中多次出现,每次对应不同的 DOC_IDPOSITION 值。

  • DOC_ID

    包含该单词的行的文档 ID。该值可能反映基础表的 ID 列的值,或者是 InnoDB 生成的序列值,当表中没有合适的列时。

  • POSITION

    该单词在相关文档中的位置,通过 DOC_ID 值标识。

注意事项

  • 该表最初为空。在查询它之前,设置 innodb_ft_aux_table 系统变量的值为包含 FULLTEXT 索引的表的名称(包括数据库名称)(例如,test/articles)。以下示例演示如何使用 innodb_ft_aux_table 系统变量来显示指定表的 FULLTEXT 索引信息。在将新插入的行信息添加到 INNODB_FT_INDEX_TABLE 之前,必须将 FULLTEXT 索引缓存刷新到磁盘。这可以通过在索引表上运行 OPTIMIZE TABLE 操作来实现,同时启用 innodb_optimize_fulltext_only 系统变量。(示例中在最后禁用该变量,因为它仅供临时使用。)

    mysql> USE test;
    
    mysql> CREATE TABLE articles (
             id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
             title VARCHAR(200),
             body TEXT,
             FULLTEXT (title,body)
           ) ENGINE=InnoDB;
    
    mysql> INSERT INTO articles (title,body) VALUES
           ('MySQL Tutorial','DBMS stands for DataBase ...'),
           ('How To Use MySQL Well','After you went through a ...'),
           ('Optimizing MySQL','In this tutorial we show ...'),
           ('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
           ('MySQL vs. YourSQL','In the following database comparison ...'),
           ('MySQL Security','When configured properly, MySQL ...');
    
    mysql> SET GLOBAL innodb_optimize_fulltext_only=ON;
    
    mysql> OPTIMIZE TABLE articles;
    +---------------+----------+----------+----------+
    | Table         | Op       | Msg_type | Msg_text |
    +---------------+----------+----------+----------+
    | test.articles | optimize | status   | OK       |
    +---------------+----------+----------+----------+
    
    mysql> SET GLOBAL innodb_ft_aux_table = 'test/articles';
    
    mysql> SELECT WORD, DOC_COUNT, DOC_ID, POSITION
           FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE LIMIT 5;
    +------------+-----------+--------+----------+
    | WORD       | DOC_COUNT | DOC_ID | POSITION |
    +------------+-----------+--------+----------+
    | 1001       |         1 |      4 |        0 |
    | after      |         1 |      2 |       22 |
    | comparison |         1 |      5 |       44 |
    | configured |         1 |      6 |       20 |
    | database   |         2 |      1 |       31 |
    +------------+-----------+--------+----------+
    
    mysql> SET GLOBAL innodb_optimize_fulltext_only=OFF;
  • 您必须拥有 PROCESS 权限才能查询该表。

  • 使用 INFORMATION_SCHEMA COLUMNS 表或 SHOW COLUMNS 语句来查看该表的列的更多信息,包括数据类型和默认值。

  • 有关 InnoDB FULLTEXT 搜索的更多信息,请参阅 第 17.6.2.4 节,“InnoDB 全文索引”第 14.9 节,“全文搜索函数”