Google App EngineでlimitをつけるとQueryが超速くなる件について

appengine ja night11で紹介した裏技1について、もうちょっときちんと測定した結果を書いときます。

limit無し測定で使ったプログラム

            List<Key> keys = null;
            log.info("log 0.");

            keys = Datastore.query(getMeta()).query().asKeyList();

            log.info("limit無し. :" + keys.size());

limit有り測定で使ったプログラム

            List<Key> keys = null;
            log.info("log 0.");

            keys = Datastore.query(getMeta()).query().limit(110000).asKeyList();

            log.info("limitあり. :" + keys.size());

データ件数100,450件での測定結果

limit有り limit無し
1回目 5.15秒 14.016秒
2回目 5.801秒 16.99秒
3回目 4.414秒 13.766秒
4回目 5.176秒 14.025秒

こんな感じでビックリするぐらい速くなります。