Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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

28.4.19 INFORMATION_SCHEMA INNODB_FT_INDEX_表

INNODB_FT_INDEX_TABLE 表提供了关于 InnoDB 表的全文索引中使用的反向索引信息。

该表在初始状态下是空的。 bevor 查询它,设置系统变量 innodb_ft_aux_table 的值为包含全文索引的表名(包括数据库名),例如 test/articles

有关使用信息和示例,请参见第17.15.4节,“InnoDB INFORMATION_SCHEMA FULLTEXT Index Tables”

INNODB_FT_INDEX_TABLE 表具有以下列:

  • WORD

    从全文索引中的文本中提取的单词。

  • FIRST_DOC_ID

    在全文索引中出现该单词的第一个文档 ID。

  • LAST_DOC_ID

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

  • DOC_COUNT

    该词在 FULLTEXT 索引中的行数。同一个词可能在缓存表中出现多次,每个组合的 DOC_IDPOSITION 值对应一次。

  • DOC_ID

    包含该词的行的文档ID。这可能反映了您为 underlying 表定义的 ID 列的值,也可以是 InnoDB 生成的序列值,如果表中没有合适的列。

  • POSITION

    该词在由 DOC_ID 值标识的相关文档中的特定实例位置。

  • 该表在初始状态下是空的。 在查询它之前,请将innodb_ft_aux_table系统变量设置为包含FULLTEXT索引的表的名称(包括数据库名称),例如:test/articles。以下示例演示了如何使用innodb_ft_aux_table系统变量来显示指定表的FULLTEXT索引信息。在INNODB_FT_INDEX_TABLE中出现新插入行的信息之前,需要将FULLTEXT索引缓存刷新到磁盘。这可以通过在带有innodb_optimize_fulltext_only系统变量启用的OPTIMIZE TABLE操作上运行索引表。 (示例在结尾将该变量禁用,因为它仅临时启用。)

    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 Full-Text Indexes”第14.9节,“Full-Text Search Functions”