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


12.10.5 全文制限

  • 全文検索は、InnoDB および MyISAM テーブルでのみサポートされています。

  • パーティション化されたテーブルでは、全文検索がサポートされていません。 セクション24.6「パーティショニングの制約と制限」を参照してください。

  • 全文検索は、ほとんどのマルチバイト文字セットで使用できます。 例外として、Unicode では、utf8 文字セットは使用できますが、ucs2 文字セットは使用できません。 ucs2 カラム上では FULLTEXT インデックスを使用できませんが、このようなインデックスが含まれない ucs2 上で IN BOOLEAN MODE 検索を実行することはできます。

    utf8 に関する備考は utf8mb4 にも適用され、ucs2 に関する備考は utf16utf16le、および utf32 にも適用されます。

  • 中国語や日本語のような表意文字を使用する言語には、単語の区切り文字がありません。 したがって、組込みの全文パーサーこれらの言語および他の言語で単語の開始位置と終了位置を判別できませんです。

    中国語、日本語および韓国語 (CJK) をサポートする文字ベースの ngram 全文パーサーと、日本語をサポートするワードベースの MeCab パーサープラグインが、InnoDB および MyISAM テーブルで使用するために提供されています。

  • 単一テーブル内で複数の文字セットを使用することはサポートされていますが、FULLTEXT インデックス内のすべてのカラムで同じ文字セットおよび照合順序が使用される必要があります。

  • MATCH() カラムリストは、この MATCH()MyISAM テーブル上の IN BOOLEAN MODE である場合を除いて、テーブルの一部の FULLTEXT インデックス定義に含まれるカラムリストに完全に一致する必要があります。 MyISAM テーブルでは、インデックスが付いていないカラムでもブールモード検索を実行できます。ただし、検索が遅くなる可能性があります。

  • AGAINST() への引数は、クエリー評価時に定数である文字列値にする必要があります。 たとえば、テーブルカラムは、行ごとに異なる可能性があるため除外されます。

  • FULLTEXT 以外の検索の場合よりも FULLTEXT 検索の場合の方が、インデックスヒントに対する制限が多くなります。 セクション8.9.4「インデックスヒント」を参照してください。

  • InnoDB では、全文インデックスを含むカラムを必要とするすべての DML 演算子 (INSERTUPDATEDELETE) は、トランザクションのコミット時に処理されます。 たとえば、INSERT 演算では、挿入された文字列がトークン化され、個々の単語に分解されます。 その後、個々の単語は、トランザクションのコミット時に全文インデックステーブルに追加されます。 その結果、全文検索ではコミットされたデータのみが返されます。

  • '%'文字は全文検索でサポートされているワイルドカード文字ではありません。


関連キーワード:  関数, 全文, インデックス, 空間, テーブル, リファレンス, 制限, 文字, セット, カラム