私たちは、いくつかのアプローチ間の相対的なコストを把握しようとしています。
チェックボックスで行をマークすることにより、テーブルから行を追加/保持/削除することを選択できるWebページがあります。(人々はページに新しいエントリを追加したり、既存のエントリを表示したりできます。)
Webサーバーに投稿されると、ページはエントリをループしてストアドプロシージャを呼び出し、チェックボックスの状態をパラメータの1つとして渡します。
ストアドプロシージャは現在delete
、各エントリのステートメントを呼び出し、その後insert
にチェックボックスがオンになっている場合はを呼び出します。これには単純さの長所があります。
そこにロジックを入れる代わりにif exists
、行がすでにテーブルにあるかどうかをテストすることを考えています。
その場合、チェックボックスがマークされている場合は、そのままにしておきます。それ以外の場合は挿入します。delete
逆に、行がテーブルになく、チェックボックスがオフになっている場合は、 andinsert
ステートメントをスキップします。これにより、などの数が最小限に抑えられdeletes
ますが、ロジックが増えます。
データベースの負荷に関して、一方のアプローチがもう一方のアプローチよりも一般的に好まれますか?
delete
新しいレコードを追加する場合のように、実際には行に影響を与えないステートメントを呼び出すにはコストがかかりますか?これはチェックより悪いif exists
ですか?
テーブルは、関連するすべての列にインデックスが付けられます。600,000エントリを投稿する場合、事前に確認することには大きな利点があると思いますが、問題のページには最大100エントリが含まれます。