今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

時間がかかるクエリとプログラミング

テーブル構造は単純なんだけど、DB のデータ量が膨大なため、クエリに時間がかかる結果となっている。例えば、

SELECT * FROM table WHERE name = 'A' AND date = '2006-06-29';

とやった場合に10秒かかるとする。
実際に取得したいデータは name = 'A' のものだけではなく、B や C や D のも取り出したい。現状、この DB にアクセスするプログラムでは、取り出したい name の数だけクエリしているため、name の数が増えれば増えるほど時間がかかってしまう。
でも、

SELECT * FROM table WHERE date = '2006-06-29';

とやった場合も同じく10秒くらいでクエリが完了する。だから、わざわざ WHERE句で name を指定しないで、全部の name に対するデータを取得すればどうか。そして、データを受け取ったプログラム側で name に対してフィルタリングすりゃいいじゃん、なんて思うのだけど、こういうやり方ってなんかまずいことあるんだろうか?
おしえて>えらい人