Innazitutto un complimento a questo forum ..è il mio primo post ..
E da un po di tempo che sto lavorando su mysql ed ora è giuto il momento dell'ottimizzazione dei miei database..

1) domanda .. meglio tabelle con tante colonne o con tante righe ?
Mi spiego meglio
faccio 2 esempi
1 )esempio
TABLE `tb_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nome` varchar(255) NOT NULL,
`cognome` varchar(255) NOT NULL,
`via` varchar(255) NOT NULL,
.......
PRIMARY KEY (`id`)
)
2)esempio 2 Tabelle

TABLE `tb_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_rif` int(11),
`id_type` int(11) varchar(255) NOT NULL,
`value` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
)

TABLE `tb_type` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`value` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
)
dove c'e una relazione tra tb_type.id=tb_user.id_type e id_rif è un campo dove ha lo stesso valore per dati apparteneti alla stessa persona

Il primo esempio è molto semplice ma ogni volta che devo aggiungere altre campi devo mettere mano alla struttura della tabella
il secondo è più versatile (cosi lavora ad esempio Magento) ma ho notato che estrapolare dati comporta un numero di join
tanti quanti sono i campi che voglio estrapolare
una select potrebbe essere :

SELECT DISTICT(id_rif), CONCAT (q0.value) AS Nome, Concat (q1.cognome) AS Cognome
FROM tb_user
LEFT JOIN (SELECT value FROM tb_user WHERE id_ref=1) AS q0 ON (q0.id_ref=tb_user.id_ref)
LEFT JOIN (SELECT value FROM tb_user WHERE id_ref=2) AS q1 ON (q1.id_ref=tb_user.id_ref)

Il Risultato del tipo

id | Nome | Cognome
1 Mario ROssi
2 Alberto Esposito

cioè una trasposizione (se così si può chiamare ) della tabella tb_user da verticale ad orizzontale

Onestamente la seconda modalità mi piace di più ma mi porta ad avere delle query che impiegano molto più tempo , anche mettendo indici ..
Cosa mi consigliate ?
Grazie