MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  ...  /  INFORMATION_SCHEMA INNODB_FT_INDEX_TABLE テーブル

26.51.18 INFORMATION_SCHEMA INNODB_FT_INDEX_TABLE テーブル

INNODB_FT_INDEX_TABLE テーブルは、InnoDB テーブルの FULLTEXT インデックスに対するテキスト検索の処理に使用される逆インデックスに関する情報を提供します。

このテーブルは最初は空です。 クエリーする前に、innodb_ft_aux_table システム変数の値を、FULLTEXT インデックスを含むテーブルの名前 (test/articles など) に設定します。

関連する使用法と使用例については、セクション15.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_ID 値と POSITION 値の組み合わせごとに一度ずつ、キャッシュテーブル内で複数回現れる可能性があります。

  • 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 インデックスキャッシュは、ディスクにフラッシュされる必要があります。 これを行うには、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 検索の詳細は、セクション15.6.2.4「InnoDB FULLTEXT インデックス」およびセクション12.10「全文検索関数」を参照してください。


関連キーワード:  テーブル, SCHEMA, INFORMATION, INNODB, TABLE, インデックス, FULLTEXT, InnoDB, articles, 単語