0

私のプロジェクトには、約20列のテーブルがあります。'status'列にテーブルを分割しました。簡単にするために、ステータス「ERROR」と「SUCCESS」の2つの可能な値があるとしましょう。したがって、テーブルにはp1とp2という2つのパーティションがあります。必要なのは、パーティションごとに異なるインデックスを作成することです。たとえば、パーティションp1はcolumn1とcolumn2にインデックスを付ける必要がありますが、パーティションp2はcolumn4とcolumn5にインデックスを付ける必要があります。

テーブルレベルでインデックスを適用する代わりに、MySqlのテーブルの個々のパーティションにインデックスを適用することは可能ですか?Mysql5.5を使用しています。テーブルレベルでインデックスを適用したくない理由は、すべての挿入が遅くなるためです。この表に挿入すると、ユーザーへの応答時間に影響します。ただし、更新はジョブを介して行われるため、応答時間は問題になりません。

4

1 に答える 1

0

MySQL では、インデックス作成はパーティション レベルではなく、テーブル レベルで機能します。

あなたの質問から、次のような多くの非常に高速なクエリを実行する準備ができている必要があるようです

 SELECT something WHERE status='ERROR' and col1='val' and col2='val'

 SELECT something WHERE status='SUCCESS' and col4='val' and col5='val'

status列の値を変更する UPDATE を行う予定はありますか? そうでない場合は、SUCCESS アイテムと ERROR アイテムを異なるテーブルに挿入し、それぞれに適切にインデックスを付けることができます。それらを一緒に取得する必要がある場合は、VIEW を使用してそれを行うことができます。

于 2012-05-25T19:11:37.390 に答える