1つのテーブルから別のテーブルに1つの「セッション」のデータを挿入します。これを行う前に、[Unique ID]列を使用して、この同じセッションに関する既存のデータをすべて削除したいと考えています。TSQLのパフォーマンス - 削除するデータをチェックするか、削除するだけですか?
私の質問は次のとおりです。
は、データが&が存在するなら、私は確認することが、より効率的ですそのようにようにそれを削除します。
if (exists (select top 1 * from dbo.destinationTable where [Unique ID] = @unique_id))
begin;
delete from dbo.destinationTable where [Unique ID] = @unique_id;
end;
それとも単にチェックせずにDELETEステートメントを実行することをお勧めします最初に:
削除するものがない場合、削除が失敗しないので、なぜチェックしますか? – Will
この場合EXISTSを持つ必要はありません。 – FLICKER
'DELETE'だけを使用している場合は、[' @@ RowCount'](https://msdn.microsoft.com/en-us/library/ms187316.aspx?f=255&MSPPError=-2147217396)をチェックしてすべての行が削除されました。または、削除された行を知る必要がある場合は、['OUTPUT'](https://msdn.microsoft.com/en-us/library/ms177564.aspx)句を追加します。 SQL Serverを使用していると仮定します。ヒント:適切なソフトウェア(MySQL、Oracle、DB2など)とバージョンの両方でデータベースの質問にタグを付けると便利です。 'sql-server-2014'です。構文と機能の相違は、しばしば答えに影響します。 – HABO