投稿数 - 437, コメント - 59540, トラックバック - 156

取る前か取った後か

「性別が男の顧客をデータベースから取得する」
クエリーで条件を絞ってから取得するか、全顧客を取得してからプログラムでフィルタするか。

「今月が誕生日の顧客をデータベースから取得する」
とか、
「今月が誕生日で、且つ、性別が女、且つ、1年以内に取引のあった顧客をデータベースから取得する」
とか、いろいろ出てくるので、各条件をそれぞれ別のクエリーにするよりは、「顧客クラス」のプロパティだとかメソッドだとかにしておけば、条件が重なったとき楽チンだ。

もちろん、データの件数、アクセス頻度やデータベースとの距離等を考慮して、地球に優しい方を選択すべきだが、その匙加減がいまいち分からない。
なので、「遅いと言われるまで」は、地球防衛軍には待機して頂く。

あなたはどっち派ですか?

投稿日時 : 2006年1月11日 11:45

フィードバック

# re: 取る前か取った後か

この手の話は結局どんなデータが、どんな分布で、どれくらい入るかによるのです。
1年の取引データが100件なら全部取ってくるでしょうし、100万件なら、その条件でも甘すぎるかもしれません。(10万件ヒットするかもしれません。)
2006/01/11 12:22 | 中博俊

# re: 取る前か取った後か

1 時間くらい反応が返ってこないアプリケーションを常駐先でみた。
データ件数は 1000 万件近くだったらしい。

ストレス運用カバーかいなww
2006/01/11 12:41 | じゃんぬ

# re: 取る前か取った後か

開発時から 100万件、1000万件が予想できていたら良いのですが、「ん~、多いか少ないかわからんなぁ」というレベルなら全部取る方が楽だなぁと思いつつ、運用が始まってから、触らせてくれるのかな?と心配になって、条件を絞ってみたり…。^^;
2006/01/11 13:09 | 囚人

# re: 取る前か取った後か

多いか少ないかわからない場合には、多い方をとるべきです。
多いほうから少ないほうへの設計変更は容易でも、逆は大変になることのほうが多いです。
2006/01/11 15:20 | 中博俊

# re: 取る前か取った後か

なるほど。確かにそうですね。
多い方を採っていれば、多くても少なくても関係ないですね。

>多いほうから少ないほうへの設計変更は容易でも、逆は大変になることのほうが多いです。

これは逆かな?とか思うんですが。
データが少ないと思っていたから、全部取る方式を採っていたけれど、データが多くなったので、条件を絞って取る方式に変えた。の方が容易な気がします。
ん~どうだろ。書き方次第でしょうか。

いや、そもそも多い方から少ない方への設計変更とかしないのか…。
2006/01/11 16:13 | 囚人

# re: 取る前か取った後か

ほりおこし。

もともと同時に100件しか表示しないようにページングしておけば、微調整は100->300に変更するだけでよかったりする。

ただし全件取得前提の場合には、ページングを実装しなくちゃいけない。

もちろん実装コストもあるので、十分に顧客に理解させる必要があるところです。

#実際には顧客は件数なんて知らないというんですが。。。(^^;
2006/01/16 13:21 | 中博俊

コメントの投稿

タイトル
名前
URL
コメント