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

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

merge-joinを明示的に実行する方法

はありません、とMLで教えてもらいました。

http://groups.google.com/group/google-appengine-java/browse_thread/thread/35ede3e4a299a2e6/bb64cb6dd3e6c913#bb64cb6dd3e6c913

As long as your query consists entirely of equality filters and does not
have any sort orders, it will not require a composite index.  If your query
only filters on a single property it will be executed using a built-in
index.  If your query filters on more than one property it will be executed
using a merge-join across built-in indices.

超訳:複数のプロパティを使うクエリで、コンポジットインデックスを作らない場合は、自動的にmerge-joinになる)

All of this said, I wouldn't recommend thinking about your queries in terms
of the underlying query plan, since those are implementation details and
liable to change.  Avoiding composite indices will make your writes faster
and save on storage, so that's certainly worthwhile if those are pain points
in your application, but beyond that there isn't really much reason to
target specific types of query plans. 

(「アプリが重くなるようなコンポジットインデックスはできるだけ作るべきでない」ことは確かだが、それ以外の内部的なクエリプランについては変更される可能性もあるからあまり意識しない方がいい)