登録ページがあり、最初にいくつかの必須フィールドをDBに挿入したいと思います。その後、2番目のページで、に従っていくつかの詳細を更新したいと思いますuserid
。
だから私はそれを行うための最良の方法であるストアドプロシージャでこれを行いたい、挿入と更新のストアドプロシージャを別々に作成するか、挿入と更新を持つ単一のプロシージャを作成しますか?
パフォーマンスの観点から最も優れているのはどれですか?
登録ページがあり、最初にいくつかの必須フィールドをDBに挿入したいと思います。その後、2番目のページで、に従っていくつかの詳細を更新したいと思いますuserid
。
だから私はそれを行うための最良の方法であるストアドプロシージャでこれを行いたい、挿入と更新のストアドプロシージャを別々に作成するか、挿入と更新を持つ単一のプロシージャを作成しますか?
パフォーマンスの観点から最も優れているのはどれですか?
2つの別個のストアドプロシージャがデータベースサーバーによってプリコンパイルされているため、これらを同じクエリに含めることによるパフォーマンスの向上はありません。これは、パフォーマンスよりもメンテナンスの問題です。挿入と更新用に別々のストアドプロシージャを用意することをお勧めします。これは、単一のスクリプトでそれらをマッシュアップするよりもはるかに読みやすく、明白です。
挿入用のプロシージャと更新用のプロシージャを作成できます
挿入と更新の手順を別々に書くと、手順が挿入または更新のどちらを行うかを考慮する必要がないため、より効率的になりますが、効率の節約は最小限になるため、これに基づいて決定を下すことはなく、より基づいている必要があります読みやすさとわかりやすさについて。
パフォーマンスの違いはほとんどありません。どこかで数マイクロ秒の違いがあるはずですが、実際にはそれはほんのわずかであり、他の多くの小さな決定が違いを一掃します.
その場合、唯一の本当の違いは、コードがどれほど明確になるかです。あなたの説明から、「新しいユーザーを作成する」と「ユーザーを更新する」は、コードの残りの部分によって別個の懸念事項として扱われているように思われるため、別個にする必要があります。
コードで「必要に応じて作成または更新」操作を処理する方が簡単である理由がある場合、それは別の問題ですが、ここでそれが当てはまることを示唆するものは何もありません.
INSERT
用と用の 2 つの別個のストアド プロシージャを作成できますUPDATE
。それは誰にとっても簡単に理解できるでしょう。
ただし、MSSQL 2008 以降を使用している場合は、単一のストアド プロシージャを作成して以下を利用できますMERGE
。