@markus101 Is the lazyloading afterwards included in your measurement? Or did you test loading both tables separately and then join like in your earlier comment?
It's the lazyloading individual episodefiles thats killing. The difference between your recommendation and mine is only that I prefer delegating the Join operation to the datastore layer instead of doing it manually.

If you're really loading all of it, a custom SQL with ResultSet is likely faster than those 3 sec.