Excelのレコードの大量を一時テーブルにアップロードしています。次に、これらの行を合計し、PKでメインテーブルに集計する必要があります。どちらが速いですか?ストアドプロシージャの挿入またはダイレクト後のトリガー
挿入後にメインテーブルに挿入されているかどうかを確認するトリガーを作成しました(既存のものは挿入されず、既存のものはその行のすべての列が更新されます)。
はので、私はその後、トリガは、メインテーブルに/更新を挿入する別の一時表INSERT INTO TEMPTBL (select SUM(...)...* from temptable)
に挿入する必要があり、このTRIGGERをトリガします。
これは適切な方法か単なるTEMPテーブルを使用してSPを使用して、1つのCURSOR FETCH(既存の行の更新用)と残りの用の挿入を使用して検査することです。
ありがとうございます。これらは複数のユーザーを処理するため、理想的であるか高速であるかを知る必要があります(デッドロックはまだ心配しないでください)。
これは、INSERTパートのSPで行ったことです。問題の部分はアップデートになります。私は既存の行のいくつかの列を更新する必要があります。 – Sid
私は、DELETE * FROM WHEREの行が存在すると思います。残りの部分に挿入します。それは大丈夫でしょうか?また、ユーザーが何千もの行をアップロードする可能性があるため、これらのログを最小限に抑えるにはどうすればよいでしょうか。私はTRUNCATE TABLEを使用していますが、私はすぐに他のユーザーの最近アップロードされたデータを切り捨てるのではないかと心配しています。 :D – Sid
@sid最初は何千もの行がたくさんあるように見えますが、SQL Serverは何百万もの処理に対応しています。クリーンでセットベースのアプローチを取っている限り、パフォーマンスについてあまり心配する必要はないと思います。これを念頭において、更新ステートメントは、削除/挿入より少ないログ・エントリを生成します。私はあなたがすべてを切り捨てる必要があるとは思わない...あなたの一時テーブルは接続ごとにする必要があります、そして、あなたが完了したらそれは自動的にクリーンアップされます。参照してください –