2009-04-21 10 views
6

Estoy tratando de decidir entre dos posibles implementaciones y estoy ansioso de escoger la mejor opción :)rendimiento por encima de añadir un campo BLOB en una tabla

tengo que añadir un campo BLOB opcional a una tabla que actualmente sólo tiene 3 campos simples Se predice que el nuevo campo se usará en menos del 10%, tal vez incluso en menos del 5% de los casos, por lo que será nulo para la mayoría de las filas; de hecho, la mayoría de nuestros clientes probablemente nunca tendrán datos BLOB allí.

La primera inclinación de un colega fue agregar una nueva tabla para contener solo los BLOB, con una clave externa (anulable) en la primera tabla. Él predice que esto tendrá beneficios de rendimiento al consultar la primera tabla.

Pensé que es más lógico y más fácil almacenar el BLOB directamente en la tabla original. Ninguna de nuestras consultas hace SELECT * de esa tabla, así que mi intuición es que almacenarla directamente no tendrá una sobrecarga de rendimiento significativa.

Voy a comparar ambas opciones, pero esperaba que algunos gurús de SQL tuvieran algún consejo de la experiencia.

Uso de MSSQL y Oracle.

Respuesta

5

Para MSSQL, los blobs se almacenarán en una página separada en la base de datos, por lo que no deberían afectar el rendimiento si la columna es nula.

Si usa el tipo de datos IMAGE, los datos siempre se almacenan fuera de la fila. Si usa el tipo de datos varbinary (max), si los datos son> 8kb, se almacenan fuera de la fila, de lo contrario, pueden almacenarse en la fila dependiendo de las opciones de la tabla.

Si solo tiene unas pocas filas con blobs, el rendimiento no debería verse afectado.

Cuestiones relacionadas