Newsgroup: it.comp.appl.access
Titolo: Ottimizzazione db

buongiorno a tutti, 
vorrei sottoporVi un mio dubbio, per avre idee più chiare, riflettere e soprattutto per non fare c...e senza una cognizione di quel che faccio.
Allora il mio db è costituito da 6 postazioni client e una server.
Sul server ho una quindicina di tabelle con una dimensione del file di circa 20MB.
Per fare un pò di pulizia ho agito sulla tabella principale, contenente circa 11.000 record, eliminando alcuni campi mai utilizzati.
Questo mi ha portato a ottenere una tabella contenente circa 70 campi con un file di 15MB complessivi.
La prima domanda: Posso sapere le dimensioni delle singole tabelle per capire dove è più opportuno agire? Mi sembra di ricordare di averlo già visto ma non vorrei, complice l'età avanzata sbagliare.
Seconda domanda (per me più difficile)
Su molti degli 11.000 record una parte di campi non vengono alimentati, cioè mi spiego meglio, non sempre la tabella viene riempita e il campo rimane vuoto.
Posso per questi campi cancellare i record e metterli in una tabella collegata tramite query?
In parole povere prenderei questi campi li elimino dalla tabella principale e li metto in una nuova tabella, collegata alla stessa tramite un campo univoco.
Non so se il gioco vale la candela, ma se conto dieci campi (x 11000) scarsamente alimentati o vuoti penso che il risparmio di spazio sia notevole...
Gradirei vostre autorevoli impressioni, grazie infinite a tutti.

 notevole...
 
L'aspetto se un campo è spesso vuoto o no non decide sulla
struttura delle tabelle. Decidono le regole di normalizzazione e
in casi eccezionali considerazioni di prestazione.
 
Se i 70 campi sono necessari per rappresentare la faccenda
e la struttura e normalizzata come mai pensi a suddividere la tabella?
 
Se i molti campi causano problemi di prestazione nel frontend
devi controllare se le tabelle hanno indici giusti che sono anche
usati bene nel frontend e se le query e tutte le stringhe SQL lavorono
con i campi necessari, non sempre con tutti (SELECT *) .
 
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 
 
 

ciao Karl, grazie per l'aiuto.
 
purtroppo non posso installare l'utilità che mi consigli, perchè non ho privilegi da amministratore sulla mia macchina. La mia versione di access comunque è la 2003 con SP2.
 
Per quanto attiene il db, confesso che si è implememtato man mano in base alle esigenze del momento e diversi campi della struttura, magari utili due anni fa, non risultano più necessari.
Quindi, spostare questi dati in una tabella aggiunta e collegata, mi consentirebbe, oltre a non perdere dati storici, di economizzare sull'"impegno" dello spazio e dei campi della tabella principale.
 
In ultimo devo confessare che la riduzione da 20 a 15 MB ha comportato una sensibile riduzione dei tempi di apertura delle maschere.
 
ringrazio infinitamente.

quello che non mi è chiaro....
Provo a spiegarmi meglio. Dalla mia tabella principale scorporo quella parte di tabella che contiene dati poco alimentati.
Avrò quindi la tabella NUMERAZIONI con 11.000 record alimentati su 40 campi e una tabella INTEGRAZIONI con i restanti 30 campi alimentati solo per 1000 record.
Collego le due tabelle tramite una relazione con un codice univoco presente in entrambe le tabelle.
Ora nelle maschere che prima leggevano i campi da NUMERAZIONI basta che cambio l'origine dei dati (in INTEGRAZIONI) per averne la corretta visualizzazione. E' corretto ?
Allo stesso modo se nella maschera di inserimento dati arrivo alle cella, ora collegate alla tabella INTEGRAZIONI, posso inserire senza problemi i dati ?
 
In parole povere basta un collegamento nelle relazioni per garantire un input/output dei dati dalla maschera ?
 
grazie infinite a chi potrà/vorrà aiutarmi.