Pregunta

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

Sin embargo, muchos ejemplos en la web muestran el uso de un DataSet y el acceso a las tablas a través del método de colecciones.

¿Existe alguna ventaja, en términos de rendimiento o no, al utilizar DataSets o DataTables como método de almacenamiento para resultados de SQL?

¿Fue útil?

Solución

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

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

Otros consejos

Una diferencia importante es que los conjuntos de datos pueden contener varias tablas y usted puede definir relaciones entre esas tablas.

Si solo devuelve un único conjunto de resultados, creo que una tabla de datos estaría más optimizada.Creo que tiene que haber algunos gastos generales (aunque sean pequeños) para ofrecer la funcionalidad que ofrece un conjunto de datos y realizar un seguimiento de varias tablas de datos.

en 1.x solía haber cosas que DataTables no podía hacer y que DataSets sí podían (no recuerdo exactamente qué).Todo eso fue cambiado en 2.x.Supongo que es por eso que muchos ejemplos todavía usan DataSets.Las DataTables 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.

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

Hay algunas optimizaciones que puede utilizar al completar un DataTable, como llamar a BeginLoadData(), insertar los datos y luego llamar a EndLoadData().Esto desactiva algunos comportamientos internos dentro de DataTable, como el mantenimiento de índices, etc.Ver Este artículo para mas detalles.

De todos modos, cuando 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 puedes usarlo y probar si es nulo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top