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件だったから、随分と速くはなった。