ホームページ >バックエンド開発 >PHPチュートリアル >MySQL マニュアル バージョン 5.0.20-MySQL の最適化 (2) (1) (3)_PHP チュートリアル
接続タイプは、インデックス ツリーのみをスキャンすることを除いて、ALL と同じです。通常、インデックス ファイルはデータ ファイルよりも小さいため、ALL よりも高速です。 MySQL は、クエリされたフィールドの知識が別のインデックスの一部である状況でこの結合タイプを使用します。
ALL
は、テーブルのフルスキャンを実行して、前のテーブルから取得したレコードと結合します。この時点で、最初のテーブルが const としてマークされていない場合は問題が発生しますが、これは通常、他の状況では非常に問題になります。通常、ALL はインデックスを追加してテーブルからレコードをより速く取得することで回避できます。
possible_keys
possible_keys フィールドは、MySQL がテーブル レコードを検索するときに使用するインデックスを参照します。このフィールドは、EXPLAIN によって表示されるテーブルの順序とは完全に独立していることに注意してください。これは、 possible_keys に含まれるインデックスが実際には使用されない可能性があることを意味します。このフィールドの値が NULL の場合、インデックスが使用されないことを意味します。この場合、WHERE 句のどのフィールドがインデックスの追加に適しているかを確認して、クエリのパフォーマンスを向上させることができます。これでインデックスを作成し、EXPLAIN で確認できます。詳細については、「14.2.2 ALTER TABLE 構文」の章を参照してください。テーブルにどのようなインデックスがあるかを確認したい場合は、SHOW INDEX FROM tbl_name を実行できます。
key
key フィールドは、MySQL が実際に使用するインデックスを示します。インデックスが使用されない場合、このフィールドの値は NULL になります。 MySQL に possible_keys フィールドのインデックス リストの使用または無視を強制するには、クエリ ステートメントでキーワード FORCE INDEX、USE INDEX、または IGNORE INDEX を使用します。 MyISAM および BDB タイプのテーブルの場合、ANALYZE TABLE を使用すると、どのインデックスを使用するのがより良いかを分析できます。 MyISAM タイプのテーブルの場合は、コマンド myisamchk --analyze を実行すると同じ効果があります。詳細については、「14.5.2.1 ANALYZE TABLE 構文」および「5.7.2 テーブルのメンテナンスとクラッシュ リカバリ」の章を参照してください。
key_len
key_len フィールドは、MySQL で使用されるインデックスの長さを示します。キーフィールドの値が NULL の場合、インデックスの長さは NULL になります。 key_len 値は、MySQL が実際にジョイント インデックスでどのインデックスを使用するかを示すことに注意してください。