I vote that you query the data when you need it and release it when you are done. If you see bad performance, you can think of changing the method, but I have a feeling performance won't be bad.
Just to give you an example, I created the game
downWORD which is a tetris style game where letters fall and you place them trying to spell words. I needed to query for various matches both vertically and horizontally. If a word is found, the row disappears and all tiles slide down. Then I must query against all possible words in all directions. I'm doing this against the SOWPODS database with 189,000 words and soon with a French dictionary with 212,000 words. I'm really able to run upwards of 30 queries in less than a second so that the game doesn't show any slowdown checking for the words.
My guess is as long as you setup your indexes correctly you shouldn't have any problems. Even if you have inner joins on the tables, things should go okay. By keeping the memory clean, you won't have to worry about what to do when the phone suddenly sends you those out-of-memory warnings.
One last thing, I did have to break from tradition with an enterprise database and create and open the connection and leave it open. When I tried closing the connection and reopening when needed, performance was really unacceptable, especially as the board filled up with letters. But beyond that, it was just a matter of setting indexes.
Hope that helps, good luck.