2009-08-17 27 views
11

¿Cuál es la forma más eficiente de leer solo parte de los datos binarios de un campo varbinary (MAX) (no usando FileStreams) en SQL Server 2008?Servidor SQL Varbinary (max): seleccione un subconjunto de bytes del campo varbinary

Al escribir datos en la columna, la función VarBinary.Write() está disponible en T-SQL, lo que permite que los bytes se escriban en el campo incrementalmente, pero no parece haber una función similar disponible para leer datos.

Conozco el método DataReader.GetBytes() en .Net que seleccionará solo los bytes que solicite, pero ¿conlleva esto una sobrecarga de rendimiento? es decir, ¿la selección en sqlserver leerá todos los bytes en la base de datos, y le dará al método getBytes() todos estos bytes para que tome el subconjunto de bytes que se le solicitan?

Gracias por cualquier ayuda.

Respuesta

17

Utiliza SUBSTRING. Esto lee un fragmento de sus datos varbinary en el servidor, y solo devuelve el fragmento al cliente.

+4

+1 ¡muy interesante! ¡No tenía idea de poder usar SUBSTRING en una columna VARBINARIA! :-) –

+1

Muy útil, gracias. – gmn

+0

Maravilloso. ¿Quién lo hubiera pensado? El poder de la subcadena humilde –

1

El uso de DataReader.GetBytes() es posible sin sobrecarga, afaik. Pero tendrá que llamar al ExecuteReader() con la opción CommandBehavior.SequentialAccess.

Cuestiones relacionadas