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 se muestran usando un DataSet en su lugar y accediendo a las tablas a través del método de colecciones.
¿Hay alguna ventaja, en cuanto al rendimiento o no, de usar DataSets o DataTables como método de almacenamiento para resultados SQL?
Respuestas:
Realmente depende del tipo de datos que está trayendo 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 cuanto 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.
fuente
Una diferencia importante es que los DataSets pueden contener múltiples tablas y usted puede definir relaciones entre esas tablas.
Si solo está devolviendo un conjunto de resultados único, creo que una DataTable estaría más optimizada. Creo que tiene que haber algo de sobrecarga (se le otorga un pequeño) para ofrecer la funcionalidad que hace un DataSet y realizar un seguimiento de múltiples DataTables.
fuente
en 1.x solía haber cosas que DataTables no podía hacer que los DataSets podían (no recuerdo exactamente qué). Todo lo que se cambió en 2.x. Supongo que es por eso que muchos ejemplos todavía usan DataSets. Las tablas de datos deberían ser más rápidas ya que son más livianas. Si solo está obteniendo un único conjunto de resultados, es su mejor opción entre los dos.
fuente
Una característica del DataSet es que si puede llamar a varias declaraciones select en sus procedimientos almacenados, el DataSet tendrá una DataTable para cada uno.
fuente
Hay algunas optimizaciones que puede usar al llenar una DataTable, como llamar a BeginLoadData (), insertar los datos y luego llamar a EndLoadData (). Esto desactiva algunos comportamientos internos dentro de DataTable, como el mantenimiento del índice, etc. Consulte este artículo para obtener más detalles.
fuente
Cuando de todos modos solo se trata de una sola tabla, la mayor diferencia práctica que he encontrado es que DataSet tiene un método "HasChanges" pero DataTable no. Sin embargo, ambos tienen un "GetChanges", por lo que puede usarlo y probar nulo.
fuente
Un objeto DataTable representa datos tabulares como una memoria caché tabular en memoria, de filas, columnas y restricciones. El DataSet consiste en una colección de objetos DataTable que pueden relacionarse entre sí con objetos DataRelation.
fuente