Just an idea - I have connections to MySQL databases on the other side of the world and have quite high ping times to them. Creating a new connection, or opening an existing database, results in a number of SQL queries that looks up database/table structure and so on, and it takes a while before all of these complete.
Wouldn't it be possible to ask most of these queries in a single SQL statement? I'm counting 15 different queries (3 for connecting to the server, 12 for opening a database) that could just be all run in one go and fetched with multiple result sets. I think?