私は2つのパーティションを持つテーブルを持っています。パーティションはpactive = 1
とpinactive = 0
です。私は、2つのパーティションがそれほど多くの利益を上げるわけではないことを理解していますが、これを使って1つのパーティションで切り詰めてロードし、別のパーティションにプレーンな挿入を行いました。MySQLのパーティションテーブルのインデックス
インデックスを作成するときに問題が発生します。
クエリは、このよう
select partitionflag,companyid,activityname
from customformattributes
where companyid=47
and activityname = 'Activity 1'
and partitionflag=0
作成したインデックス行く -
create index idx_try on customformattributes(partitionflag,companyid,activityname,completiondate,attributename,isclosed)
上記のクエリからretreivedされます周りの200000のレコードがあります。しかし、上記のインデックスと一緒にクエリを実行するには30秒以上かかります。そのような長い時間の理由は何ですか?また、上記のインデックスからpartitionflagを削除すると、インデックスは使用されません。
そして
- でもパーティションを利用可能で、オプティマイザは、インデックス定義で述べた必要なパーティションを持っている必要がありますように、それが唯一の正しい----必要なパーティションを打つ、理解はありますか?
これを理解する上の任意のアイデアは、あなたがそれで列を並べ替えることで、あなたのインデックスを最適化することができ、非常に有用
説明出力がなければ、推測するだけで済みます。 – Shadow
こんにちは、計画の詳細の下に見つけてください ID - 1 SELECT_TYPE - SIMPLE テーブル - customformattributes タイプ - REF possible_keys - idx_try キー - idx_try key_lenに - 213 REF - constの、constの、constの 行 - 247892 フィルター済み - 100.00 余分 - ここでは;インデックスを使用する –
私は、クエリ実行計画に特に問題がないとは思わない。あなたは大きな結果を持っています。結果セットを減らし、クエリのパフォーマンスをそのようにチェックしようとしましたか? – Shadow