The current implementation of query-time join could be complemented with a much faster one, provided some choices can be made about what to join on.
Since join is really a database concept, we found it quite natural to restrict the keys to be integers and be single valued.
We found that if it is possible to use integers keys, and having single valued key fields, the speed of join can be improved 50 fold. Proper caching again speeds up about 20 times.
I'd like to contribute our code if you agree that it is a useful contribution. That probably depends on what you think of the choices we made about the keys, so that need to be discussed first?