- - PR -
Database Expert 会議室での質問について
投票結果総投票数:35 | |||
---|---|---|---|
SQLで可能なことは極力SQLに任せて実現する。 | 26票 | 74.29% | |
SQLは単純化し、極力ロジックで実現する。 | 9票 | 25.71% | |
|
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-11-26 17:49
こんにちは。ぴんふです。
以前からの疑問についてアンケートをしてみようかと思います。 どうかご協力をお願いします。 Database Expert 会議室で「SQLでこういうことがしたいのですが・・・」という質問を良く見るのですが、私から見ると「SQLじゃなくてプログラムのロジックで処理したほうが保守性、可読性が高くないか?」というものが結構あるわけです。 ケースバイケースだとは思いますが、 私は特に制約が無く、APのパフォーマンスに影響が無い場合はSQLは極力単純にし、 細かい処理や条件分岐などはプログラムのロジックで組むようにしています。 そこで皆さんに質問です。 AP中のデータベースアクセスに際しては、 (1)SQLで可能なことは極力SQLに任せて実装する。 (2)SQLは単純化し、極力ロジックで実装する。 前提としては前述の通り、 ・開発ポリシー、コーディング規約に特に制限がないこと ・(1)(2)のどちらを選んでもAPのパフォーマンスに大差がないこと です。 以上、よろしくお願いします。 |
|
投稿日時: 2007-11-26 18:11
参考までに。
Martin Fowler's Bliki in Japanese - ドメインロジックとSQL http://capsctrl.que.jp/kdmsnr/wiki/bliki/?DomainLogicAndSQL |
|
投稿日時: 2007-11-27 09:29
問い合わせ系に関しては、ストアドにしといた方が、DBの差異を吸収できたり、チューニングが容易に思える。
したがって、SQLで可能なことは極力SQLに任せて実現する。を選択。 |
|
投稿日時: 2007-11-27 11:24
よっぽど複雑で、一発のSQLだと大変な場合を除き、基本SQLでやってます。
ロジックで書くより、SQLで書いたほうが意図が伝わるケースの方が、私の場合多いので。 なので「 SQLで可能なことは極力SQLに任せて実現する。」に投票。 |
|
投稿日時: 2007-11-27 12:41
(1)に投票しましたが、よく質問に出てくる「行の情報を列として横展開したい」
など、SQLの苦手な分野ではプログラムで記述しています。 |
|
投稿日時: 2007-11-27 14:02
投票してません。「極力」を「可能な限り」と解釈すると、どちらでもないです。
SQLで全レコード取ってきて、プログラム内で"今日のデータ"だけ抽出、とかは当然やらないし、 けど、3営業日前のデータを取得、とかはSQLでできても(自分の判断では)やらないです。 |
|
投稿日時: 2007-11-27 14:50
「SQL一発」はパフォーマンスが良い場合が多く、アプリケーションロジックが簡素化されてBugが入り込む余地が少なくなるというメリットがあるので、基本的には複雑なSQL文はOKです。
ただし、ぱっと見て理解し難いくらい複雑な場合は、ドキュメントなりコメントなりで、そのSQL文を自然言語(うちの場合は英語)で完璧に説明することを求めます。 これができない場合(意外と多い)は、本人ですら実は理解できていないことになりますので、SQL文をばらします。 |
|
投稿日時: 2007-11-27 15:22
複雑なSQLはテスト困難、場合によってはテスト不可能になるので使いたくないですね。
私の場合、その一点に尽きるのですけども。 |