スティルハウスの書庫の書庫

はてなダイアリーで書いてた「スティルハウスの書庫」を移転してきました。

1000件以上のクエリ結果件数の取得

これは大変ありがたいまとめ! JDOだと1000件以上取得できるとは知らなかった。。

http://shin1o.blogspot.com/2009/08/appengine-1000.html
http://shin1o.blogspot.com/2009/08/appengine-1000_15.html

    * Low-level APIのPreparedQueryだと1000件の上限があるが、JDOのQueryだと上限が無い
    * 確かに上限は無いけど、JDOでQuery#execute().size()はめっちゃ遅くて現実的ではない
    * JDOでもQuery#setResult("count(this)")は速い。でも、こいつは実はLow-level APIに丸投げなのでやっぱ1000件の上限に引っかかる。
    * JDOでもQuery#setResult("key")するとLow-level APIでいうsetKeysOnly()と同じ、キーのみクエリになる。でも1000件の上限に引っかからない!
結果、setKeysOnly()しない方は平均3642ms/7473件で、setKeysOnly()した方は平均1441ms/7473件となった。JDOを使ってアレコレして1000件以上取得する場合は7218ms/7473件だったから、随分と速くはなった。