2

主キーと外部キーを持つテーブルがあり、両方を含むクエリで検索が頻繁に行われる(...WHERE primary=n AND foreign=x)場合、2つのキーを使用してMySQLで複数のインデックスを作成することによるパフォーマンス上の利点はありますか?

どちらもすでにインデックスであることは理解していますが、外部キーが別のテーブルに含まれている場合でもインデックスとして表示されるかどうかはわかりません。たとえば、MySQLは主キーに移動し、正しいキーが見つかるまで外部キーのすべての値を比較しますか、それとも外部キーもインデックスであるため、外部キーがどこにあるかをすでに知っていますか?

更新:InnoDBテーブルを使用しています。

4

1 に答える 1

2

同等性の比較では、主キーインデックスを改善することはできません(その時点では、一致できる行は多くても1つしかないため)。

アクセスパスは次のようになります。

  1. primary=nの主キーインデックスを確認します
  2. テーブルから一致する単一の行を取得します
  3. 表の行を使用して他の条件を確認します

主キーの範囲スキャンがあり、それを他の列で絞り込みたい場合は、複合インデックスが意味をなす場合があります。

于 2011-09-26T11:43:10.943 に答える