インデックスとパーティション


20

インデックスのみでパフォーマンスの向上を達成できないのはなぜですか?そのため、テーブルパーティションのような他の手法が必要になりますか?質問はパフォーマンスのみに関連しています。もちろん、異なるパーティションを異なるテーブルスペースに配置することはできますが、これはインデックスでは達成できない他の効果をもたらします。

または言い換えれば、パフォーマンスの面でのみ:テーブルのパーティション分割と同じパフォーマンスの向上を達成することは可能ですか?


2
インデックス作成とパーティション化をパフォーマンス向上のどちらかまたは両方のソリューションと考えるのではなく、両方を個別にまたは組み合わせて使用​​して、データベースのパフォーマンス向上を実現できるツールと考える必要があります。
-ScottCher

回答:


18

いいえ、パーティション化により、一部のテーブルスキャンを特定のパーティションに制限することができます。テーブルのデータの2〜4%以上を返す場合、インデックスは役に立たない傾向があります。選択基準によってクエリを特定のパーティションにローカライズできる場合、他のパーティションをスキャンする必要はありません。

オプティマイザーは、一部のパーティションにテーブルスキャンを使用し、他のパーティションにインデックスを使用することを選択できる場合があります。それが起こっていることを示す説明計画を見たことはありません。

多数の履歴データがある場合、現在のデータのクエリを作成して、現在のデータを含むパーティションに限定されるパーティションを制限できます。


3
パーティションを作成しています。各パーティションに適切なストレージデバイスを選択してください。実際のデータパーティションを高速ドライブに配置し、古いドライブを他のタイプに配置します。
ニコ

7

あなたの最後の質問に直接答えるために:いいえ、私はそれらが同等であるとは思いません。1日のデータを検索する必要がある非常に大きなテーブル(数十GB)を考えてください。デイリーパーティションを使用すると、スペースのペナルティなしでその日のデータのみをスキャンしますが、インデックスは十分な情報を保持できない可能性がある(また、大きなデータベースについて話す場合に懸念されるスペースを使用する)別の構造です十分な選択。

とにかく、インデックスとパーティションは、使用法とパフォーマンスの面で同じ利点を求めて競合していません。データベースで残高を見つける必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.