Originariamente inviato da tigh
è vero che aggiungere colonne alle tabelle di un database già esistente può creare problemi di prestazione al db anche permanenti?

e in questo caso come è meglio procedere: aggiungere da subito dei campi che resteranno vuoti magari a lungo o creare una nuova colonna nel momento in cui sorge l'esigenza di aggiungere un campo?
Dipende. Senza alcun dubbio però l'idea di aggiungere colonne non richieste è assolutamente da scartare. Infatti ti porterebbe da subito proprio quelle penalizzazioni che vorresti evitare.

Aggiungere colonne, anche se non comporta alcun problema dal punto di vista funzionale, comporta invece un calo di prestazioni, ma quanto evidente sia dipende soprattutto dall'uso che fai della nuova colonna e da come sei abituato a impostare le query.

Considerando come buona norma mettere sempre al fondo della tabella le colonne blob, ipotizziamo ti serva aggiungere una nuova colonna dopo una colonna blob. Da ora in poi quindi il motore del DB per raggiungere la nuova colonna posta al fondo dovrà saltare il valore inline* della colonna blob.

Prestazioni: se tu usi richiamare sempre le due ultime colonne associate insieme allora il calo di prestazioni sarà prossimo allo zero. Se invece vuoi richiamare solo l'ultima colonna allora in presenza di molte righe da esaminare le prestazioni ne risentiranno.

* l'allocazione dello spazio inline riservato alle colonne blob dipende dai vari produttori. Alcuni RDBMS permettono pure una loro definizione personalizzata. Solitamente si aggira intorno a 255 bytes.