Mysql
 sql >> Database >  >> RDS >> Mysql

Prestazioni MySQL JOIN su 1 tavolo grande e più tavoli piccoli

Dal momento che è una relazione "uno a molti", li memorizzerei in una tabella separata. L'ottimizzatore di query del server SQL (sotto il cofano) sarà in grado di analizzare i 250 record abbastanza rapidamente da non essere un problema. Inoltre, a seconda della lunghezza dei valori nella tabella più piccola, risparmierai spazio di archiviazione non memorizzandoli centinaia di milioni di volte in più. Tuttavia, se le prestazioni di reporting sono della massima importanza, puoi scegliere di archiviarle in una tabella "appiattita", come una struttura di data warehouse, senza i join. Sarà sicuramente più veloce, ma sacrificheresti lo spazio di archiviazione e il tuo database relazionale ben strutturato.

Detto questo, andrei con l'opzione 1. Ma dovresti essere in grado di archiviare facilmente i dati in una nuova tabella con il formato dell'opzione 2 - eseguire query su entrambi - e quindi valutare le prestazioni da solo. Mi aspetto che non farà molta differenza, soprattutto data la capacità dei tuoi tavoli più piccoli.