1

これについては多くの質問がありますが、少なくとも私が探していたものは見つかりませんでした。

今のところ明らかなこと:

 MyIsam is faster at searching strings (much faster)
 InnoDB is faster at joins (much faster)

だから私の問題はこれです:私は次の設定をしています:

id2 つのテーブル、列, bla1, bla2, ...,を持つ t1 としましょうblan。列t1Idextra1extra2、...、を持つ t2 extran

表 1 (t1) は InnoDB です (トランザクションが必要なので、明確です)。テーブル 2 (t2) は常に t1 と共に使用されます (いくつかの特定のケースの追加データです)。それは InnoDB を指します。問題は、結合後に、列の 1 つの内部の文字列に対しても (常に) 検索が行われることです。これは MyISAM を指します。

何かを取得する時間は、明らかに参加時間と検索時間の合計です。問題は、一方を最適化すると、もう一方が遅くなることです。

おまけの事実: テーブルは非常に大きく、t2 はトランザクション、行ロック、または通常 InnoDB を課すものを必要としません。

より良い選択は何ですか?MyISAM または InnoDB?

4

2 に答える 2

1

私はこのようにします:

無料の mysql クエリ アナライザーについては、こちらを確認してください。

このようにして、結合と検索のコストを確認できます。次に、結果に基づいてフォーマットを選択する必要があります。検索の「コスト」が高い場合は、たとえば、mYisam を選択します。

それに加えて、インサートの数などに応じて、どちらが最適かを見つけるのに役立つ優れた比較があります.

それが役に立てば幸い。言うのは難しいです: 1 つが優れています。一般的には、クエリやデータなどに大きく依存します。

于 2013-05-14T12:12:10.833 に答える