電気羊の執務室

魔法を作る仕事をしています。

SQLでもう一歩頑張るのが大事?

SQLの重要性

昨年から、販売管理の基幹システムをリプレースしています。
稼動状態までは来ていますが、現場からは、
『昔使えていた便利な機能がなくなった! 』 という不満も受けています。

新システムの機能拡張については、 SQL Serverのユーザー定義関数として表現すると、 カスタマイズの工数が少なく済むようにできています。

そこで、現在までに、約10画面ていど、SQLだけで書きました。 C#で書いた画面も5~6画面あります。

そこで気づいた事があります。

業務システムは、SQLでいろいろできると、そこから先が楽じゃないでしょうか。

SQLでやると楽な理由

1.移植性が高い

社内のイントラ環境のDBサーバーに、データ抽出用のSQLを書くとします。 SQL(ユーザー定義関数)で書いてしまえば、 モバイル向けに、DBをWebにレプリケーションしたとしても、
リモートDBに同じ関数をコピーすることで、ほぼ無加工で移植できます。

2.最適化されてて速い

サーバー側で最適化した実行プランで動くので、 モバイルアプリ化した時の事など考えると、端末側で計算させるより、
サーバーでやるほうがうまく行きそうです。

3.意外と表現力がある

でもSQLでやれる事に限界があるし・・・と思っていましたが、
基本的なデータ加工なら、標準SQLでできることがわかりました。

SQLのデータ加工

Grouping演算子

例えば、SQLには、Grouping演算子というものがあります。

これは、データの最後に集計行を足してくれるというものです。 ユーザー定義関数の最後に集計行をINSERT、という事もやってきましたが、 これを使いこなせれば、1つのSQLでできるので、
表現力が上がりそうです。

Pivot/Unpivot

データの縦持ち/横持ちを変換するキーワードです。

データの最適化は、使う時に縦横を変換する前提で成り立つので、 SQLだけで目的の形まで簡単に戻ると、楽ができそうです。

特に縦横変換をアプリでやろうとすると、
毎回少しは面倒なはずなので、PIVOT句で解決できれば、
工数削減効果が大きそうな気がします。

Comments