なぜかというと、1レコードごとに全レコードの値を取ってきているから。
あと、インデックスの使うためには、本来あるフィールドに対して、関数を利用したものと比較する際には、インデックスは使用されない。
これはインデックスが使われる
TO_CHAR(YYYY-MM-DD, 'YYYYMMDD') = 20121217
本来は逆であるべきだが、
YYYY-MM-DD = TO_DATE('YYYYMMDD')
みたいなのはインデックスが使用できない。Oracleの場合はfunctionIndexが使えるので、それで対応できるらしい。