1

MySQLが外部キーのインデックスを自動的に作成するかどうかを誰かに教えてもらえますか?

私のMySQLはMyIsamエンジンを使用しています。

4

2 に答える 2

6

MyISAMは外部キーをまったくサポートしていません。マニュアルから:

InnoDB以外のストレージエンジンの場合、MySQLサーバーはCREATETABLEステートメントのFOREIGNKEY構文を解析しますが、それを使用または保存しません。...後の段階で、外部キー制約がMyISAMテーブルにも実装されます。

これは次のバージョンのMySQL5.6用であるため、まだ実装されていません。テキストは古いバージョンでもまったく同じです。

これは、外部キー構造がまったく使用されていないことを意味します。コマンドで指定できますCREATE TABLEが、MySQLは黙ってそれを無視します。インデックスは作成されず、保存されません(したがって、SHOW CREATE TABLEコマンドは、外部キーを作成しようとしたことを示しません)。

外部キーのサポートが必要な場合は、代わりにInnoDBストレージエンジンの使用を検討してください。InnoDBは、外部キーのインデックスを自動的に作成します。

于 2012-06-28T13:05:04.410 に答える
1

MyISAMエンジンは外部キーをサポートせず、InnoDBエンジンのみをサポートします。

http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html

InnoDBでは、外部キーと参照キーのインデックスが必要です。これにより、外部キーのチェックが高速になり、テーブルスキャンが不要になります。参照テーブルには、外部キー列が同じ順序で最初の列としてリストされているインデックスが必要です。このようなインデックスは、参照テーブルが存在しない場合は自動的に作成されます。外部キー制約を適用するために使用できる別のインデックスを作成すると、このインデックスは後でサイレントに削除される可能性があります。index_nameが指定されている場合は、前述のように使用されます。

于 2012-06-28T13:05:46.997 に答える