2017-12-29 34 views
0

私は最近、SQL EXPLAINを使用しようとしてきた、そして何かが、PK Possible KeysとK KeySQLの説明、可能なキーとキー、私はPKか全部のいずれかを選択しますか?

がweridされ、私は例えば、以下の行

私は私がしなければならないことを理解何
[id - select_type - table - type - possible_keys - key - key_len - ref - rows - Extra] 
[1 - PRIMARY - users - const - PRIMARY, username - username - 66 - const - 1 - using index; using temporary; using filesort] 

を取得PRIMARYusernameの両方をmultiple indexとして選択してください。ただし、の表にPRIMARYというキーが1つしかない場合は、PKに私が選択したキーが表示されますか?

+0

キーの考え方は、データベースの検索を高速化することです.PKもキーですが、通常は他のテーブルの参照に使用されます。 PKはプライマリキーを意味すると思います。 –

+0

@ maytham-someいくつかのテーブルでは 'key = NULL'と' possible_keys = PRIMARY、column'を得て、 'NULL'キーが悪いと思います。もし' PRIMARY、column'と ' 'possible_keys'と' keys'が 'NULL'になります、それはどういう意味ですか? – Toleo

+0

フィールドがキーに変換できません。ヌルが含まれている場合は、他のものでなければなりません。私はモバイルデバイス上でコメントを追加できますようにお願いします。 –

答えて

1

クエリで使用する「インデックスを選択」しないでください。オプティマイザが選択します。

PRIMARY KEY(PK)は、1つ以上の列を含むことができます。テーブルは1つのPKだけを持つことができます。すべてのテーブルにはPKが必要です。

「二次キー」は、PK以外のインデックスです。それも1つ以上の列を持つことができます。

オプティマイザは、単一のSELECTに複数のインデックス(PKまたはセカンダリ)を使用することはほとんどありません。

「可能なキー」は、オプティマイザがの可能性があると考えているものです。です。さらに分析した後、どちらを使用するかを決定し、それを「キー」列に宣言します。あなたの例では、オプティマイザはINDEX "username" (...)PRIMARY KEY(...)よりうまくいくと判断しました。私はあなたが意味する「複数のインデックス」を期待するものでは不明だ

...

  • 複数のインデックスが存在することもできます。オプティマイザは1つ以上を使用する可能性はほとんどありません。
  • インデックスに複数の列が含まれることがあります。
  • テーブルは複数のインデックスを持つことができます。

オプティマイザにはフォールバックがあります。インデックスに触れることなく、テーブル全体をスキャンするだけです。

EXPLAINsについてさらに詳しくお聞きしたい場合は、SELECTEXPLAINの両方をご提示ください。複数のペアを表示するので、比較して対比することができます。

関連する問題