文字および文字列カラムの場合、次のガイドラインに従います。
言語固有の照合機能が必要でない場合は、比較およびソート操作を速くするため、バイナリ照合順序を使用します。 特定のクエリー内でバイナリ照合順序を使用するには、
BINARY
演算子を使用できます。さまざまなカラムの値を比較する場合、可能なかぎり、それらのカラムを同じ文字セットと照合順序で宣言し、クエリー実行中の文字列変換を避けます。
サイズが 8K バイト未満のカラム値では、
BLOB
の代わりにバイナリVARCHAR
を使用します。GROUP BY
およびORDER BY
句は一時テーブルを生成する可能性があり、これらの一時テーブルでは、元のテーブルにBLOB
カラムが含まれない場合に、MEMORY
ストレージエンジンを使用することがあります。テーブルに名前や住所などの文字列カラムが含まれるが、多くのクエリーでそれらのカラムを取得しない場合、文字列カラムを個別のテーブルに分割し、必要に応じて、外部キーで結合クエリーを使用することを考慮します。 MySQL で行から何らかの値を取得する場合、その行 (およびおそらくその他の隣接する行) のすべてのカラムを含むデータブロックを読み取ります。 もっとも頻繁に使用するカラムのみで、各行を小さくすることで、より多くの行を各データブロックに収めることができます。 そのようなコンパクトなテーブルは、一般的なクエリーのディスク I/O やメモリーの使用量を削減します。
InnoDB
テーブルで主キーとして、ランダムに生成された値を使用する場合、可能であれば、現在の日時などの降順の値でプリフィクスを付けます。 連続したプライマリ値が、相互に物理的に近くに保存されていれば、InnoDB
はそれらを高速に挿入し、取得できます。数値カラムの方が通常同等の文字列カラムより推奨される理由については、セクション8.4.2.1「数値データの最適化」を参照してください。