2009-04-21 18 views
6

sto cercando di decidere tra due possibili implementazioni e sono ansioso di scegliere il migliore :)prestazioni sovraccarico di aggiungere un campo BLOB a una tabella

ho bisogno di aggiungere un campo BLOB opzionale per un tavolo che attualmente solo ha 3 campi semplici. Si prevede che il nuovo campo verrà utilizzato in meno del 10%, forse anche meno del 5% dei casi, quindi sarà nullo per la maggior parte delle righe, infatti la maggior parte dei nostri clienti probabilmente non avrà mai dati BLOB.

La prima inclinazione di un collega era quella di aggiungere una nuova tabella per contenere solo i BLOB, con una chiave esterna (nullable) nella prima tabella. Egli prevede che questo avrà dei vantaggi in termini di prestazioni quando si esegue una query sulla prima tabella.

I miei pensieri erano che è più logico e più facile memorizzare il BLOB direttamente nella tabella originale. Nessuna delle nostre query effettua SELECT * da quella tabella, quindi la mia intuizione è che l'archiviazione diretta non avrà un sovraccarico significativo delle prestazioni.

Ho intenzione di confrontare entrambe le scelte, ma speravo che alcuni guru di SQL avessero qualche consiglio in base all'esperienza.

Utilizzo di MSSQL e Oracle.

risposta

5

Per MSSQL, i BLOB verranno archiviati in una pagina separata nel database in modo che non influiscano sulle prestazioni se la colonna è nullo.

Se si utilizza il tipo di dati IMAGE, i dati vengono sempre memorizzati fuori dalla riga. Se si utilizza il tipo di dati varbinary (max), se il dato è> 8kb, questo viene memorizzato al di fuori della riga, altrimenti può essere memorizzato nella riga a seconda delle opzioni della tabella.

Se si dispone solo di poche righe con BLOB, le prestazioni non dovrebbero essere influenzate.

Problemi correlati