Performance improvements: analyze expressions for inner joins only once, call generateOutputSchema only once on the best plan only