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

Numero elevato di colonne nel database MySQL

Ok, vedo il tuo dialemma e, in assenza (presumibilmente di breve durata) di un esperto di database, ti darò la mia opinione.

Per motivi di sanità mentale, dividi i tuoi dati. Diciamo che stai memorizzando informazioni sulle persone. Non hai bisogno di 200 colonne in 1 tabella. Dovresti dividerli e avere più colonne in molte tabelle. es.

tblGeneralCharacteristics:
 - colEyeColor
 - colHairColor
 - colHeight
 - colWeight

tblInterests:
 - colFaveColor
 - colFaveSport

tblRelationships
 - colMother
 - colFather
 - colBrother
 - colSister

In questo modo è molto meglio. Computazionalmente dubito che importi molto. Ovviamente con ogni query stai recuperando meno dati, quindi per alcuni rapporti (in cui potresti non aver bisogno di ottenere tutti i dati o sfogliare tutti i dati) potrebbe essere più veloce (sebbene se indicizzi il database correttamente, non dovrebbe non essere un problema).

Al prossimo numero. Quello della quantità di record nel database. Se 10.000 inizia a diventare un po' grande, è ora di iniziare a memorizzare nella cache.

Ora, per quanto mi riguarda, non esiste un modo giusto o sbagliato per memorizzare nella cache i dati. Ciò di cui hai bisogno è ciò di cui hai bisogno. Quindi, ad esempio, nella tua domanda hai menzionato di ottenere le altezze medie per il peso per i record inseriti tra gennaio e marzo 2012. Bene ... potresti scrivere uno script cron che calcola le altezze medie per il peso per tutti i record inseriti in quel mese e lo memorizza in una tabella diversa da qualche parte. Quindi, quando crei il tuo rapporto, devi solo ottenere i valori per gennaio, febbraio e marzo e calcolarne la media... è molto più semplice. Invece di eseguire una query computazionale su potenzialmente migliaia di righe, stai eseguendo una query cron (che non importa quanto tempo impiega) su un paio di centinaia di righe, quindi il rapporto effettivo interroga solo 3 righe.

Un altro trucco è che più calcoli puoi fare in SQL, meglio è. Se vuoi fare la media di campi/record o sommare qualcosa, invialo con la tua query SQL. Il server SQL eseguirà il calcolo e restituirà il risultato, invece di restituire enormi quantità di dati da setacciare. So che questo non è sempre facile/utile, ma più puoi far fare a SQL, meglio è.

Spero che sia di aiuto. Come ho detto, sono sicuro che un esperto di database non vede l'ora di darti qualche consiglio più approfondito. :)