7

私は2つの可能な実装のどちらかを決定しようとしており、最良のものを選択したいと思っています:)

現在単純なフィールドが 3 つしかないテーブルに、オプションの BLOB フィールドを追加する必要があります。新しいフィールドが使用されるケースは 10% 未満、場合によっては 5% 未満であると予測されるため、ほとんどの行で null になります。実際、ほとんどのお客様はそこに BLOB データを持っていないでしょう。

同僚の最初の傾向は、BLOB のみを保持する新しいテーブルを追加し、最初のテーブルに (null 許容の) 外部キーを追加することでした。彼は、最初のテーブルをクエリするときに、これによりパフォーマンスが向上すると予測しています。

私の考えでは、BLOB を元のテーブルに直接格納する方がより論理的で簡単です。私たちのクエリはSELECT *そのテーブルから行わないので、直観的には、テーブルを直接保存してもパフォーマンスのオーバーヘッドは大きくありません。

両方の選択肢をベンチマークするつもりですが、SQL の達人が経験からアドバイスをしてくれることを期待していました。

MSSQL と Oracle を使用します。

4

1 に答える 1

5

MSSQL の場合、ブロブはデータベースの別のページに格納されるため、列が null の場合にパフォーマンスに影響を与えることはありません。

IMAGE データ型を使用すると、データは常に行の外に格納されます。varbinary(max) データ型を使用する場合、データが 8kb を超える場合は行の外側に格納されます。それ以外の場合は、テーブル オプションに応じて行に格納される場合があります。

ブロブを含む行が数行しかない場合、パフォーマンスは影響を受けません。

于 2009-04-21T13:17:47.030 に答える