私の .net アプリケーションには、2 つの異なる SQL サーバー テーブルにレコードを作成するアクションがあります。ここでのベストプラクティスは何ですか?
1 つのストアド プロシージャで両方のレコードを作成する必要がありますか? または、別のストアド プロシージャが該当するデータベースに各レコードを作成し、両方の呼び出しをトランザクションにラップして、一方が失敗すると両方が失敗するようにする必要がありますか?
どれがより高性能ですか?
私の .net アプリケーションには、2 つの異なる SQL サーバー テーブルにレコードを作成するアクションがあります。ここでのベストプラクティスは何ですか?
1 つのストアド プロシージャで両方のレコードを作成する必要がありますか? または、別のストアド プロシージャが該当するデータベースに各レコードを作成し、両方の呼び出しをトランザクションにラップして、一方が失敗すると両方が失敗するようにする必要がありますか?
どれがより高性能ですか?
ストアド プロシージャの方が確実にパフォーマンスが向上します。また、サーバー側で記述しなければならないコードが少なくなります。欠点は、SQL を自分で作成する方法を知っているか、一緒に SQL を作成できる DBA が必要になることです。
他の質問に関しては、両方のテーブルに挿入する 1 つのストアド プロシージャになります。
考慮すべきもう 1 つの点: コード全体でこのようなことを大量に行う必要がある場合は、適切な ORM を学習し、これをすべてコードで実行する価値があるかもしれません (オプション 2)。しかし、これが一握りの場所でのみ行う 1 回限りのことである場合は、ストアド プロシージャの方が賢明なアプローチになります。
SQL Server のストアド プロシージャにロジックを配置し、トランザクション スコープを定義することをお勧めします。.net アプリケーションでトリガーされたこのアクションがストアド プロシージャで操作を実行し、この 2 つのアクションが正常に終了した場合はトランザクションを送信します。それ以外の場合、このトランザクションはロールされます。 -戻る。このようにして、パフォーマンスが向上するからです。Microsoft のドキュメントに従ってストアド プロシージャを使用すると、次のような利点があります。