[Seasar-user:19904] Re: [S2JDBC] h2database利用時のAutoSelect<T>.getCount()の挙動について

TAKEUCHI Hideyuki [E-MAIL ADDRESS DELETED]
2010年 6月 23日 (水) 23:46:56 JST


たけうちです。

少し返信遅くなってしまいましたが、
小林 (koichik) 様ありがとうございます。

>> h2databaseは"count(*)"を呼び出した際は高速にカウントを
>> 取得できるようになっているとマニュアルに記載されているのですが、
>>    jdbcManager.from(Entity.class).getCount()
>> を実行すると
>>    select count(T1_.ID) from ENTITY T1_
>> が発行されてしまって最適化が効きません。
>>
>> この挙動を簡単に変更することは可能でしょうか?
> 
> selectBySql() または selectBySqlFile() を
> 使ってください.

了解しました。動的にINDEX付きのカラムの条件を追加したり削除したり
する必要があったのですが、selectBySql()でがんばってみます。


>> あと、AutoSelect<T>.getCount()のjavadocに
>>    SELECT COUNT(*)の結果である行数を返します。
>> と書かれており実際に実行されているSELECT COUNT(id)と
>> 処理の内容が異なっているように思えます。
> 
> 「論理的には」同じということで.
> RDBMS によっては count(*) の方がインデックスが
> 使われずに遅くなるケースもあったりしたはずなので,
> どちらが適当かはケースバイケースになると思います.

確かにそうですね。了解しました。

--
たけうち


Seasar-user メーリングリストの案内