同僚とのSQLパフォーマンスについて議論し、運用データストアテーブルを維持するという話題が登場しました。私の同僚(私よりもはるかに経験が豊富です)は、データの更新が行われたときにテーブルで標準のDML操作を実行するよりも、テーブルを削除して再作成し、すべてのレコードを挿入する方が速いことを示しています。私は懐疑的であり、以前のプログラミングの背景(R)では、私にとっては直感に反しているようです。バニラDML操作対DROP、RECREATE、(RE)INSERT - これはより効果的ですか?
単一のレコードは約です。 1.6キロバイト。 50列。レコード数はビジネスプロセスごとに異なりますが、テーブルのサイズは25000レコード程度で、最小値は25000000程度です。一般的なデータはODSテーブルにロードされます.0〜500のレコードが1日あたりテーブルごとに作成または変更されます。よりパフォーマンスのあるオプション
、よくインデックス付きテーブルを維持し、単一INSERT
操作で2つのDML操作(DROP TABLE
、CREATE TABLE
)対バニラDML操作(INSERT
、UPDATE
、DELETE
)を使用して?
'...約拡散します。 50列....それはデータベーステーブルではありません。それはスプレッドシートです! – joop
@joop本当に。私はあなたに聞きましたが、これらのODS表の範囲を制御することはできません。私たちのソースシステムには、EAVデータモデルの運用レポートを作成しようとすると自殺してしまうため、ODSのようなテーブルを作成するために、特定のデータモデル(EAV)が用意されています。クライアントが100個の属性を持つようにデータセットを構成している場合、* k * + 100列があります。* k *は定数です(正しく覚えていれば5です)。 – Marley