la domanda non mi è chiarissima, ma se si può così riformulare
"conviene aprire le connessioni e le tabelle mysql all'avvio, oppure una alla volta", nella mia esperienza, la risposta è
"dipende dal componente che usi per collegarti, e soprattutto quali sono le query iniziali".
Esempio (usando ZEOS): se hai una tabella "codiciiva" di 10 righe, con una query del tipo select * from codiciiva, puoi tranquillamente "aprirla" all'avvio (tenendo conto che si tratta di una tabella ubiquitaria)
se ne hai una del tipo "documenti" con 100.000 righe e 200 colonne, una select * from documenti sarebbe invece "devastante", giacchè caricherebbe in memoria una caterva di dati, rallentando parecchio l'avvio, sprecando memoria etc.
In questo caso, in generale, preferisco l'approccio
"fai una procedura che apre i vari tdataset è aperto (o la query o quello che sono"), se sono già aperti niente, altrimenti aprili, specifici per ogni Tform.
In sostanza sono procedure chiamate nella formshow che "al momento" aprono solo (e solamente) tabelle e query necessarie.
---
Quelle invece "piccole" e "ubique" (es. tabella utenti, permessi, codici iva), come già accennato, all'avvio
---
Riguardo invece ad MDI concordo che non ha tantissimo senso, anche considerato che puoi creare a runtime tutte le TForm che vuoi, mostrarle con show (anzichè showmodal) e "spostarle" davanti e dietro l'una alle altre come vuoi.
Anche qui (parlo sempre della mia esperienza, ognuno sceglie la strada che preferisce) in generale uso tform modali (create a runtime, tranne quelle "ubique", con la stessa logica di prima) CON alcune form non-modali (finestre log, essenzialmente, chat con gli utenti etc), "portate davanti" (niente ontop, funziona male)