:: DEVELOPER ZONE
一般に、低速の SELECT ... WHERE の速度を上げる必要がある場合は、まず、インデックスを追加できるかどうかをチェックします。See 項5.4.3. 「MySQL でのインデックスの使用」。一般に複数のテーブル間の参照はすべてインデックスを使用して実行する必要があります。EXPLAIN コマンドを使用して、SELECT に使用されるインデックスを判定できます。
See 項5.2.1. 「EXPLAIN 構文(SELECT に関する情報の取得)」。
一般的なヒント
MySQL によるクエリの最適化を容易にするには、関連データをロードした後にテーブルに対して myisamchk --analyze を実行する。これはインデックスのために、同じ値があるレコードの平均値を更新する(ユニークインデックスの場合、これは常に 1 になる)。MySQL はこれを使用して、2 つのテーブルを '非定数式' で接続する際に選択するインデックスを判定する。
SHOW INDEX FROM table_name を実行し Cardinality カラムを調べると、analyze の実行結果をチェックできる。
インデックスに従ってインデックスとデータをソートするには myisamchk --sort-index --sort-records=1(インデックス 1 でソートする場合)を使用する。速度を上げるには、すべてのレコードの読み取りにユニークインデックスを使用し、そのインデックスに従った順序で読み取りを行うように推奨される。ただし、このソートでは書き込みの最適化はできず、テーブルが大きい場合は時間がかかる。
© 1995-2005 MySQL AB. All rights reserved.
