Ottimizzazione database SQL

22 Gen 2013
26
0
0
Salve a tutti, vorrei avere un consiglio di ottimizzazione.
Ho aperto da poco un sito di quiz, il processo è così strutturato: Una volta eseguito il quiz vengono inseriti dei valori in una tabella con campi quali "username,categoria,id domanda, risposta, ecc". Quindi per ogni domanda si crea un campo.

Nell'arco di 3 giorni sono state fatte 14.160 domande, risultato: la tabella è arrivata a 700 Kb. Ora vedendo la cosa in una prospettiva più ampia con una semplice proporzione, significa che arrivando a 2.000.000 di domande si raggiungeranno 100 Mb, che è lo spazio massimo messo a disposizione da aruba per il database. Ogni aumento di 100 Mb costa 7 euro l'anno. Non è tanto il costo che mi preoccupa (anche) ma quello che volevo provare era ottimizzare un po' il tutto, se conviene.
Avevo pensato di immettere questi dati creando un nuovo campo nella tabella dell'user direttamente, creando magari delimitatori adeguati "-,/,ecc". Il problema è che come è gestita per ora è davvero funzionale, nel senso che questi dati vengono manipolati molto (per classifiche, esecuzione di domande personalizzate e così via), mentre in quel caso dovrei ricreare procedure apposite e non so quanto possa convenire, soprattutto visto che non so di quanto si ottimizzerebbe lo spazio.
Voi che consigliate?
 
ciao
da quello che ho capito tu hai una tabella (ipotizzo che si chiami quiz per intenderci)
username,categoria,id domanda, risposta, ecc
ti conviene suddividere in più tabelle, usando le proprietà relazionali di mysql
tabella utenti
id int(nn) autoincrement primarikey
username
password (e/o altri campi relativi all'utente se ti servono)
tabella categorie
id int(nn) autoincrement primarikey
nome_categoria
tabella domande
id int(nn) autoincrement primarikey
id_categoria int(nn)
domande

quindi la tabella quiz diventa
id int(nn) autoincrement primarikey
id_utente int(nn)
id_categoria int(nn)
id_domanda int(nn)
risposta

cioe cercando di rendere la tabelle meno ridondanti possibile
es
la tabella quiz scritta cosi
id | username varchar(25)...
da cui
1 | pinco...
2 | pinco...
3 | pallino...
occupa più spazio della somma di
tabella utenti
id | username...
1 | pinco
2 | pallino
e tabella quiz
id | id_utente...
1 | 1...
2 | 1...
3 | 2...

certo che devi rimettere un po' mano a tutto e se sei gia avanti non so se ti convenga pagare i 7 euro
 
ciao
da quello che ho capito tu hai una tabella (ipotizzo che si chiami quiz per intenderci)
username,categoria,id domanda, risposta, ecc
ti conviene suddividere in più tabelle, usando le proprietà relazionali di mysql
tabella utenti
id int(nn) autoincrement primarikey
username
password (e/o altri campi relativi all'utente se ti servono)
tabella categorie
id int(nn) autoincrement primarikey
nome_categoria
tabella domande
id int(nn) autoincrement primarikey
id_categoria int(nn)
domande

quindi la tabella quiz diventa
id int(nn) autoincrement primarikey
id_utente int(nn)
id_categoria int(nn)
id_domanda int(nn)
risposta

cioe cercando di rendere la tabelle meno ridondanti possibile
es
la tabella quiz scritta cosi
id | username varchar(25)...
da cui
1 | pinco...
2 | pinco...
3 | pallino...
occupa più spazio della somma di
tabella utenti
id | username...
1 | pinco
2 | pallino
e tabella quiz
id | id_utente...
1 | 1...
2 | 1...
3 | 2...

certo che devi rimettere un po' mano a tutto e se sei gia avanti non so se ti convenga pagare i 7 euro

Si ho capito che intendi ma così dovrei diciamo cambiare proprio tutto...vediamo come va se mi conviene altrimenti pago e amen :S
 
Non credo convenga cambiare tutto il codice. Al massimo potresti provare a scrivere su file se proprio non vuoi pagare.
Si rallenterà la procedura di lettura e scrittura ma credo che un pò di spazio lo risparmieresti.
 

Discussioni simili