0

約 250 万行のテーブルがあり、元の 250 万行にブール値フラグが設定された 3500 万行のはるかに大きなテーブルに移動することを考えています。

新しい大きなテーブルの 250 万件のレコードに対して多くのクエリを実行したい場合、インデックスを追加すると便利でしょうか / すべてのクエリで完全なテーブル スキャンが発生しないでしょうか? 従来、ブール値ではインデックスが役に立たないことはわかっていましたが、真のレコードは 7% しかないため、すべてのクエリでテーブル スキャンを実行する必要はないと考えました。

4

3 に答える 3

2

おそらく、部分的なインデックスの使用を見てください。

ドキュメントから

部分インデックスは、テーブルのサブセットに対して構築されたインデックスです。サブセットは、条件式 (部分インデックスの述語と呼ばれます) によって定義されます。インデックスには、述語を満たすテーブル行のエントリのみが含まれます。

部分インデックスの主な動機は、共通の値のインデックス作成を避けることです。共通の値 (すべてのテーブル行の数パーセント以上を占める値) を検索するクエリはインデックスを使用しないため、これらの行をインデックスに保持しても意味がありません。これにより、インデックスのサイズが縮小され、インデックスを使用するクエリが高速化されます。また、すべての場合にインデックスを更新する必要がないため、多くのテーブル更新操作が高速化されます。例 11-1 は、この考え方の適用例を示しています。

于 2013-06-18T22:44:38.760 に答える
0

効率的にアクセスしたいテーブルのかなりの部分がある場合は、パーティショニングを検討します。

于 2013-06-18T22:54:44.280 に答える