2

Oracleデータベースに100列のテーブルがあります。このテーブルの50列は、このテーブルにアクセスするプログラムによって使用されません。(つまり、selectクエリは関連する列のみを選択し、「*」は使用しません)

私の質問はこれです: 必要な列だけで同じテーブルを再作成すると、元のテーブルで使用したのと同じクエリを使用してクエリのパフォーマンスが向上します(関連する列のみが選択されていることに注意してください)

プログラムがこれらのクエリを1秒あたり妥当な回数にすることは言及する価値があります!

PS: これは私が取り組んでいる既存のプロジェクトであり、テーブルのデザインは他の製品でもかなり前に作成されました(そのため、現在未使用の列があります)

4

1 に答える 1

3

したがって、これの効果は、余分な列にテーブルに存在しなくなるデータが含まれている場合、平均行が小さ​​くなることです。したがって、テーブルを小さくすることができ、ディスク上のスペースの使用量が少なくなるだけでなく、SGAのメモリスペースの使用量も少なくなり、キャッシュがより効率的になります。

したがって、全表スキャンを介してテーブルにアクセスする場合は、セグメントの読み取りが高速になりますが、インデックスベースのアクセスメカニズムを使用する場合は、キャッシュからブロックをフェッチする可能性が向上することで、パフォーマンスが向上する可能性があります。 。

[編集]

このSOスレッドは、「常にタプルをプルします... 」を示唆しています。したがって、すでに述べたように、メジャーかマイナーかはわかりませんが、パフォーマンスがいくらか向上する可能性があります。

于 2012-05-22T09:31:30.183 に答える