Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.2Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


MySQL 5.6 リファレンスマニュアル  /  ...  /  カラムインデックス

8.3.4 カラムインデックス

もっとも一般的なインデックスの種類には、単一カラムがあり、データ構造にそのカラムの値のコピーを格納し、対応するカラム値のある行を高速にルックアップできます。B ツリーデータ構造により、インデックスは、WHERE 句内の =>BETWEENIN などの演算子に対応する特定の値、値のセット、または値の範囲をすばやく見つけることができます。

テーブルあたりの最大インデックス数とインデックスの最大長は、ストレージエンジンごとに定義されます。第15章「代替ストレージエンジンを参照してください。すべてのストレージエンジンは、1 テーブルあたり 16 個以上のインデックスと 256 バイト以上の合計インデックス長をサポートします。ほとんどのストレージエンジンでは、制限が高く設定されています。

プリフィクスインデックス

インデックス指定でcol_name(N) 構文を使用して、文字列カラムの先頭の N 文字のみを使用するインデックスを作成できます。このようにカラム値のプリフィクスのみのインデックスを作成すると、インデックスファイルをかなり小さくできます。BLOB または TEXT カラムにインデックス設定する場合、インデックスのプリフィクス長を指定する必要があります。例:

CREATE TABLE test (blob_col BLOB, INDEX(blob_col(10)));

プリフィクスは最大 1000 バイト長 (innodb_large_prefix を設定していないかぎり、InnoDB テーブルの場合は 767 バイト) です。

注記

プリフィクスの制限はバイト単位で測定されますが、CREATE TABLE ステートメントでのプリフィクス長は文字数で解釈されます。複数バイト文字セットを使用するカラムのプリフィクス長を指定する場合はこれを考慮してください

FULLTEXT インデックス

FULLTEXT インデックスの作成も可能です。これらは全文検索に使用されます。InnoDB および MyISAM ストレージエンジンのみが、CHARVARCHAR、および TEXT カラムに対してのみ、FULLTEXT インデックスをサポートしています。インデックス設定は常にカラム全体に対して行われ、カラムプリフィクスインデックス設定はサポートされていません。詳細については、セクション12.9「全文検索関数」を参照してください。

最適化は、単一の InnoDB テーブルに対する特定の種類の FULLTEXT クエリーに適用されます。これらの特性を持つクエリーは特に効率的です。

  • ドキュメント ID またはドキュメント ID と検索ランクのみを返す FULLTEXT クエリー。

  • 一致する行をスコアの降順でソートし、LIMIT 句を適用して、上位 N 個の一致する行を取得する FULLTEXT クエリー。この最適化を適用するには、WHERE 句がなく、降順の単一の ORDER BY 句のみがある必要があります。

  • 検索語に一致する行の COUNT(*) 値のみを取得し、追加の WHERE 句がない FULLTEXT クエリー。WHERE 句を > 0 比較演算子を使用せずに、WHERE MATCH(text) AGAINST ('other_text') とコーディングします。

空間インデックス

空間データ型にインデックスを作成することもできます。現在、MyISAM のみが空間型への R ツリーインデックスをサポートしています。ほかのストレージエンジンは、空間型のインデックス設定に B ツリーを使用します (ARCHIVE を除きます。これは空間型のインデックス設定をサポートしていません)。

MEMORY ストレージエンジンでのインデックス

MEMORY ストレージエンジンはデフォルトで HASH インデックスを使用しますが、BTREE インデックスもサポートしています。


User Comments
Sign Up Login You must be logged in to post a comment.