SQLは人間が書く
もとのFowlerさんの記事はまだ読んでないんですけれど、
私は最近O/R mapping toolに懐疑的で、コードにSQLを含むこと自体は悪くなく、SQLを含んでなおmaintableでtestableな書き方を探すのが本来なのではと感じています。
はんばあぐさんの日記のここに同意です。
キャッシングは置いておいて、私が疑問なのはツールによるSQLの自動生成です。
動的に生成されるSQLって、パフォーマンスは充分なのでしょうか?
1テーブルを相手にする場合ならおかしなSQLが生成されることはないと思いますけれど、業務ではややこしいSQLが必ずあります。例えば、
- 10テーブルをJOINして
- 外部結合も相関副問い合わせもあって
- そのSELECT文が複数UNION ALLされる
ようなクエリでパフォーマンスが充分なものって、動的に生成できるものなんでしょうか?
それに、SQLでは実現可能なのに自動生成ツールでは実現できないSQLもあるようですし、SQL自動生成ツールにはもうちょっとの熟成を期待しています。
現実解は、
- SQLは人間が書く。
- 結果セット→オブジェクトへの変換は、難しいことではないので何とかする。
というトコロではないかと思います。