MySQL
        のすべてのカラム型にはインデックスを張ることができます。SELECT
        操作のパフォーマンスの改善には、対応するカラムにインデックスを使用することが最善の方法です。
      
テーブルあたりの最大インデックス数とインデックスの最大長は、ストレージエンジンごとに定義されます。詳しくはStorage Enginesを参照してください。ストレージエンジンのすべてで、1 テーブルあたり 16 以上のインデックスと 256 バイト以上のインデックス長がサポートされます。大抵のストレージエンジンでは、インデックス最大長がより高く設定されています。
        インデックス指定でcol_name(N)N
        キャラクタのみを使用したインデックスを作成できます。このようにカラム値の接頭辞のみをインデックス化すると、インデックスファイルをかなり小さくすることができます。BLOB
        または TEXT
        カラムにインデックスを張る場合、インデックスに対して接頭辞長を指定しなければなりません。例
        :
      
CREATE TABLE test (blob_col BLOB, INDEX(blob_col(10)));
        接頭辞は、最大 1000 バイト長
        (InnoDB
        テーブルに対しては 767 バイト)
        まで可能です。接頭辞の最大長はバイトで評価されます。一方、CREATE
        TABLE
        ステートメント内の接頭辞長は文字数として解釈されます。マルチバイトキャラクタセットを使用するカラムに対して接頭辞長を指定するとき、このことを考慮に入れなければいけません。
      
        FULLTEXT
        インデックスの作成も可能です。これらはフルテキスト検索に使用されます。FULLTEXT
        インデックスをサポートするのは
        MyISAM
        ストレージエンジンだけで、CHAR、VARCHAR、そして
        TEXT
        カラムについてのみサポートされます。インデックス設定は常にカラム全体を対象として、カラム接頭辞のインデックス設定は行われません。詳細については、項7.8. 「全文検索関数」をご参照ください。
      
        空間データ型上でインデックスの作成もできます。現在、MyISAM
        のみが空間型 R-tree
        インデックスをサポートしています。ほかのストレージエンジンは空間型のインデックス化に
        B-trees を使用します。(ただし
        ARCHIVE や
        NDBCLUSTER
        といった空間型インデックスをサポートしないものを除きます)
      
        MEMORY
        ストレージエンジンはデフォルトで
        HASH
        インデックスを使用しますが、BTREE
        インデックスもサポートしています。
      

