Derzeit verwende ich eine DataTable, um Ergebnisse aus einer Datenbank abzurufen, die ich in meinem Code verwenden kann.
Viele Beispiele im Web zeigen jedoch, dass stattdessen ein DataSet verwendet wird und über die Sammlungsmethode auf die Tabelle (n) zugegriffen wird.
Gibt es einen leistungsbezogenen oder sonstigen Vorteil der Verwendung von DataSets oder DataTables als Speichermethode für SQL-Ergebnisse?
Antworten:
Es hängt wirklich von der Art der Daten ab, die Sie zurückbringen. Da ein DataSet (praktisch) nur eine Sammlung von DataTable-Objekten ist, können Sie mehrere unterschiedliche Datensätze in einem einzigen und daher besser verwaltbaren Objekt zurückgeben.
In Bezug auf die Leistung ist es wahrscheinlicher, dass nicht optimierte Abfragen Ineffizienz verursachen als die "falsche" Auswahl des .NET-Konstrukts. Zumindest war das meine Erfahrung.
quelle
Ein wesentlicher Unterschied besteht darin, dass DataSets mehrere Tabellen enthalten können und Sie Beziehungen zwischen diesen Tabellen definieren können.
Wenn Sie nur eine einzige Ergebnismenge zurückgeben, wäre eine DataTable meiner Meinung nach optimierter. Ich würde denken, dass es einen gewissen Overhead geben muss (der klein ist), um die Funktionalität eines DataSet zu bieten und mehrere DataTables zu verfolgen.
quelle
In 1.x gab es Dinge, die DataTables nicht konnte, was DataSets konnte (ich erinnere mich nicht genau, was). All das wurde in 2.x geändert. Ich vermute, deshalb verwenden viele Beispiele immer noch DataSets. DataTables sollten schneller sein, da sie leichter sind. Wenn Sie nur eine einzelne Ergebnismenge ziehen, ist dies die beste Wahl zwischen beiden.
quelle
Eine Funktion des DataSet besteht darin, dass das DataSet jeweils eine DataTable enthält, wenn Sie in Ihren gespeicherten Prozeduren mehrere select-Anweisungen aufrufen können.
quelle
Es gibt einige Optimierungen, die Sie beim Ausfüllen einer Datentabelle verwenden können, z. B. das Aufrufen von BeginLoadData (), das Einfügen der Daten und das Aufrufen von EndLoadData (). Dadurch wird ein internes Verhalten in der DataTable deaktiviert, z. B. die Indexpflege usw. Weitere Informationen finden Sie in diesem Artikel .
quelle
Wenn Sie sowieso nur mit einer einzelnen Tabelle arbeiten, besteht der größte praktische Unterschied darin, dass DataSet eine "HasChanges" -Methode hat, DataTable jedoch nicht. Beide haben jedoch einen "GetChanges", sodass Sie diesen verwenden und auf null testen können.
quelle
Ein DataTable-Objekt repräsentiert Tabellendaten als speicherinternen, tabellarischen Cache aus Zeilen, Spalten und Einschränkungen. Das DataSet besteht aus einer Sammlung von DataTable-Objekten, die Sie mit DataRelation-Objekten miteinander verknüpfen können.
quelle