[pgsql-jp: 29958] Re: 40万件有るデータから重複をさけて登録する
Satoshi Nagayasu
snaga @ snaga.org
2003年 5月 18日 (日) 14:31:28 JST
永安です。
"k_matsui" <matsui @ tono-k.jp> wrote:
> > 1.) count を 0 にして INSERT
> > 2.) 1.)に失敗したら、count を 1 にして INSERT
> > 3.) 2.)に失敗したら、count を 2 にして INSERT
> > 4.) 3.)に失敗したら、4回目なのでエラー
>
> 大変すばらしいと思うのですが、これですと一つ問題があります。
> 応募期間を3回に分けて、各期間ごとに1度づつ計3回の応募が
> 可能としたいので、これですと期間に関係なく3回までの応募と
> なってしまいます。
そしたら、count を periodとして、募集期間{0,1,2}の間は、
period を {0,1,2} に(プログラム内で)固定にすれば
いいのではないでしょうか?
ロジックとしては、
1.) 募集期間 n においては、period を n にして INSERT
2.) 1.)に失敗したら、(その期間内の)重複応募としてエラー
とすればいいと思います。
> 例えば、
> select count(email) from t-1 where email=$oubomail group by email
> とかで応募して来たメールアドレスがいくつあるか数えて、
> php側で一度目の応募の時はメールアドレスが0個の時、二度目の
> 応募は、1個以下、三度目は2個以下の時に応募OKみたいな感じ
> にしたらどうでしょうか?
>
> なにぶん40万件というデータをあつかった事がないのですが、
> これでは処理的に無理はありませんでしょうか?
確たることは言えませんが、集約関数は使わない方が無難な気がします。
使わなくて済むなら。
--
NAGAYASU Satoshi <snaga @ snaga.org>
pgsql-jp メーリングリストの案内