仕事のこと(SQLServerのこと)
さて、仕事のことを書いてみたいと思います。
今、メインのDBはSQLServer2008を扱っていてレポートで時間ごとの累計を出すことに四苦八苦しています。
自己結合しちゃえば簡単にできるのですが、それだと日付の期間を長くしてしまうとレスポンスが悪くなる。
かといって、テーブルに登録するのもリアルタイム性を重視されているので少し要望から外れてしまう。
来年か再来年にはSQLServerを入れ替えるのでウィンドウ関数(sum over)で解決しちゃうのですけど、それまでは待てないので色々調べてみた結果。
①レポート実行時にカーソルを使ってテーブルを更新するような方法
②テーブル変数を使ってレポート実行のたびに一時テーブル?で表示する方法。
結果的に①になったのですが、果たしてこの方法がいいかどうかは正直分かりません。
というのも、今の会社でやりながら覚えていったせいで、どういった方法が一般的なやりかたなのか、最適なものなのか、全然知識がありません。
ちゃんと勉強しろよって話ですよね。はい、DBの勉強はちゃんとしていきます。
②のほうは、素人考えですがメモリをとっちゃいそうな気がするのですが、どうなんだろ。
でも、プロセスは違えど結果的にはVIEWと同じのような気もするけど、なんか複数が同時に実行したらダメな感じがしました。
DBの勉強をしていったら分かるのかなぁ