Atualmente, uso um DataTable para obter resultados de um banco de dados que posso usar no meu código.
No entanto, muitos exemplos na Web são exibidos usando um DataSet e acessando as tabelas por meio do método de coleções.
Existe alguma vantagem, em termos de desempenho ou não, do uso de DataSets ou DataTables como um método de armazenamento para resultados SQL?
Respostas:
Realmente depende do tipo de dados que você está trazendo de volta. Como um DataSet é (com efeito) apenas uma coleção de objetos DataTable, você pode retornar vários conjuntos distintos de dados em um único objeto e, portanto, mais gerenciável.
Em termos de desempenho, é mais provável que você obtenha ineficiência de consultas não otimizadas do que da escolha "errada" da construção do .NET. Pelo menos, essa tem sido a minha experiência.
fonte
Uma grande diferença é que os DataSets podem conter várias tabelas e você pode definir relacionamentos entre essas tabelas.
Se você está retornando apenas um único conjunto de resultados, acho que uma DataTable seria mais otimizada. Eu acho que deve haver alguma sobrecarga (concedida pequena) para oferecer a funcionalidade que um DataSet oferece e acompanhar várias DataTables.
fonte
no 1.x, costumava haver coisas que o DataTables não podia fazer e que os DataSets podiam (não se lembra exatamente o que). Tudo isso foi alterado na 2.x. Meu palpite é que é por isso que muitos exemplos ainda usam DataSets. As DataTables devem ser mais rápidas, pois são mais leves. Se você está apenas obtendo um único conjunto de resultados, é sua melhor escolha entre os dois.
fonte
Um recurso do DataSet é que, se você pode chamar várias instruções de seleção nos procedimentos armazenados, o DataSet terá um DataTable para cada um.
fonte
Existem algumas otimizações que você pode usar ao preencher uma DataTable, como chamar BeginLoadData (), inserir os dados e chamar EndLoadData (). Isso desativa algum comportamento interno no DataTable, como manutenção de índice, etc. Consulte este artigo para obter mais detalhes.
fonte
Quando você está lidando apenas com uma única tabela, a maior diferença prática que encontrei é que o DataSet possui um método "HasChanges", mas o DataTable não. No entanto, ambos possuem um "GetChanges", para que você possa usá-lo e testar se é nulo.
fonte
Um objeto DataTable representa dados tabulares como um cache tabular na memória, de linhas, colunas e restrições. O DataSet consiste em uma coleção de objetos DataTable que você pode se relacionar com objetos DataRelation.
fonte