Aquí podría ser tu PUBLICIDAD


Datatable vs Dataset

votos
104

Actualmente uso una DataTable para obtener resultados de una base de datos que puedo usar en mi código.

Sin embargo, muchos ejemplos en la web muestran usando un DataSet en su lugar y accediendo a la (s) tabla (s) a través del método de colecciones.

¿Hay alguna ventaja, basada en el rendimiento o no, de utilizar DataSets o DataTables como método de almacenamiento para los resultados de SQL?

Publicado el 05/08/2008 a las 14:07
fuente por usuario GateKiller
En otros idiomas...        العربية       

6 respuestas

votos
82

Realmente depende del tipo de datos que traes de vuelta. Dado que un DataSet es (en efecto) solo una colección de objetos DataTable, puede devolver múltiples conjuntos distintos de datos en un solo objeto, y por lo tanto más manejable.

En lo que respecta al rendimiento, es más probable que obtenga ineficiencia de las consultas no optimizadas que de la elección "incorrecta" de la construcción .NET. Al menos, esa ha sido mi experiencia.

Respondida el 05/08/2008 a las 02:12
fuente por usuario ZombieSheep


Aquí podría ser tu PUBLICIDAD


votos
19

Una diferencia importante es que DataSets puede contener varias tablas y usted puede definir relaciones entre esas tablas.

Si solo devuelve un único conjunto de resultados, creo que una DataTable estaría más optimizada. Creo que tiene que haber una sobrecarga (concedida pequeña) para ofrecer la funcionalidad de un DataSet y hacer un seguimiento de múltiples DataTables.

Respondida el 14/09/2008 a las 04:07
fuente por usuario Joshua Hudson

votos
6

en 1.x solía haber cosas que los DataTables no podían hacer con los DataSets (no recuerdo exactamente qué). Todo eso fue cambiado en 2.x. Creo que es por eso que muchos ejemplos aún usan DataSets. Las tablas de datos deben ser más rápidas ya que son más livianas. Si solo está tirando de un único conjunto de resultados, es su mejor opción entre los dos.

Respondida el 05/08/2008 a las 02:10
fuente por usuario Karl Seguin

votos
5

Una característica del DataSet es que si puede llamar múltiples instrucciones de selección en sus procedimientos almacenados, el DataSet tendrá una DataTable para cada una.

Respondida el 05/08/2008 a las 02:15
fuente por usuario Shawn

votos
3

Hay algunas optimizaciones que puede usar al llenar un DataTable, como llamar a BeginLoadData (), insertar los datos y luego llamar a EndLoadData (). Esto desactiva algún comportamiento interno dentro de la DataTable, como el mantenimiento de índices, etc. Consulte este artículo para obtener más detalles.

Respondida el 14/09/2008 a las 03:55
fuente por usuario tbreffni

votos
0

Cuando sólo se trata de una única mesa de todos modos, la mayor diferencia práctica que he encontrado es ese conjunto de datos tiene un método "HasChanges", pero DataTable no lo hace. Ambos tienen un "GetChanges" Sin embargo, para que pueda utilizar eso y prueba para nulo.

Respondida el 05/12/2016 a las 12:50
fuente por usuario mickeyf