データストアのクエリ

久々のApp Engineのお勉強です。久しぶり過ぎてところどころ忘れているかも知れませんが、気にせず進めます。

複数の等価条件フィルタ

これまでカスタムインデックスとのからみでいくつかのフィルタを見てきましたが、今回は等号フィルタに関してです。等号フィルタとはもちろん「=」のことです。たとえばこんな感じ。

SELECT * FROM Player WHERE charclass='ヒーロー' AND level=10


このようなフィルタはカスタムインデックスを使わなくても結果を集めることが出来るとのことなのですが、ちょっと納得いかないのが、クエリに時間がかかったらdb.NeedIndexErrorという例外を投げる、ということ。そしてさらに納得がいかないのが例外が発生するような場合はカスタムインデックスを使えというところ。だったら最初からカスタムインデックスを作った方がいいじゃない!と思ってしまうのは私だけでしょうか?そんなにカスタムインデックスを作るのってコストがかかるんですかね?