人々が気付いていないように思われることの1つは、コード品質への影響に関係なく、SQLサーバーですべての処理を行うことは必ずしも良いことではないということです。
たとえば、いくつかのデータを取得して、そのデータから何かを計算し、そのデータをデータベースに保存する必要がある場合。次の2つの選択肢があります。
- データをアプリケーションに取り込み、アプリケーション内で計算してから、データベースにデータを送り返します
- ストアドプロシージャなどを作成して、データを取得し、データ全体を計算してから、SQLサーバーへの1回の呼び出しですべてを保存します。
2番目のソリューションは常に最速だと思うかもしれませんが、これは間違いです。SQLが問題(つまり、正規表現と文字列操作)に合わない場合でも無視します。データベースに強力な言語を持っているSQL CLRなどを持っているふりをしましょう。往復してデータを取得するのに1秒かかり、データを保存するのに1秒かかり、それをまたいで計算を行うのに10秒かかる場合。すべてをデータベースで実行している場合、それは間違っています。
確かに、あなたは2秒を剃ります。ただし、データベースサーバーの(少なくとも)1つのCPUコアの100%を10秒間浪費するのではなく、Webサーバーでその時間を浪費しませんでしたか?
Webサーバーは簡単にスケールアップできますが、一方でデータベース、特にSQLデータベースは非常に高価です。ほとんどの場合、Webサーバーも「ステートレス」であり、ロードバランサー以外の構成を追加することなく、思いのままに追加および削除できます。
そのため、操作から2秒を短縮するだけでなく、スケーラビリティについても考えてください。パフォーマンスへの影響が比較的小さく、はるかに安価なWebサーバーリソースを使用できるのに、データベースサーバーリソースなどの高価なリソースを無駄にする理由