web-dev-qa-db-ja.com

MySQLのMyISAMエンジンが外部キーをサポートしないのはなぜですか?

全文検索と外部キーを含む研究用のWebアプリを作成しています。

どこかで読んだことがありますが、MyISAMエンジンは全文検索に適しており、InnoDBは外部キーに適しています。

この場合、最高のパフォーマンスを得るにはどのエンジンを使用すればよいですか?

  • MyISAMが外部キー関係をサポートしないのに、InnoDBはなぜサポートするのですか?
  • MyISAMが全文検索をサポートするのにInnoDBはサポートしないのはなぜですか?
34
Mukilarasan
  1. この状況で、パフォーマンスを向上させるためにどのエンジンを使用する必要がありますか?

    各ストレージエンジンのパフォーマンスは、実行するクエリによって異なります。ただし、同じデータベース内の異なるテーブルが異なるストレージエンジンを使用できることに注意してください。

  2. MyISAMエンジンが外部キー関係をサポートせず、InnoDBがサポートしているのはなぜですか?

    Foreign Key Differences で文書化されているとおり:

    後の段階で、MyISAMテーブルにも外部キー制約が実装されます。

    したがって、外部キー制約はMyISAMにまだ実装されていません。

[〜#〜] edit [〜#〜]:ドキュメントからコメントが削除されたため、外部キーを実装する予定はなくなったようです。 MyISAMエンジンの制約。

  1. MyISAMエンジンが全文検索をサポートし、InnoDBがサポートしないのはなぜですか?

    MySQL 5.6の新機能 で説明されているとおり:

    FULLTEXTテーブルにInnoDBインデックスを作成し、 MATCH() ... AGAINST 構文を使用してクエリを実行できます。

    したがって、MySQL 5.6以降、InnoDBで全文検索が実装されました。

42
eggyal

Mysqlにはmyisamしかなく、innodedbが開発中であった時代を覚えています。 MyIsamは、データベース内の関係をサポートしない古いシステムであるため、外部キーを持ちません。外部キーを使用することはありません!それを使用するには、innodbがあります。 DBのリレーションなど、すべてのものが必要ない場合は、MyISAMを使用してパフォーマンスを向上させます。

0
rafal