InterBaseを使いこなすスレ
■ このスレッドは過去ログ倉庫に格納されています
0499デフォルトの名無しさん
NGNGその DDL に以下を追加してやってみた。(データ件数は1件とした。)
create index test_idx1 ON test(FIELD1, FIELD6, FIELD4);
確かに>>495を実行するとプライマリーキーのインデックス(RDB$PRIMARY1)使ってたよ。
(ところで、カウントを求めるクエリの場合は order by 句は関係ないからオプティマイザが削除してくれてるかも。)
ちなみに "select count(*) ..." を "select * ..." に変えて実行すると
ちゃんと test_idx1 インデックスを使うようになった。
ためしにプライマリキーを定義しなかった場合は、>>489 の言う通り、ちゃんと test_idx1 インデックスを
使うようになった。(order by 句を付けても付けなくても同じ)
(sql dialect 1 にしても同じ結果だった。)
ということで、結論は count 演算させる SELECT の場合に使われるインデックスはプライマリキー固定となってしまう。
(インデックスが使われない場合を除いて)
これは Firebird のバグじゃないか?
■ このスレッドは過去ログ倉庫に格納されています