Datatable vs Dataset

Obecnie używam DataTable, aby uzyskać wyniki z bazy danych, które mogę wykorzystać w moim kodzie.

Jednak wiele przykładów w web show używa zamiast tego zestawu danych i uzyskuje dostęp do tabeli(tabel) za pomocą metody collections.

Czy jest jakaś korzyść, pod względem wydajności lub w inny sposób, z używania zbiorów danych lub tabel danych jako metody przechowywania wyników SQL?

Author: Hossein Narimani Rad, 2008-08-05

6 answers

To naprawdę zależy od rodzaju danych, które przynosisz. Ponieważ zbiór danych jest (w rzeczywistości) tylko zbiorem obiektów, które można datować, można zwrócić wiele różnych zestawów danych w jeden, a zatem łatwiejszy do zarządzania, obiekt.

Pod względem wydajności, bardziej prawdopodobne jest uzyskanie nieefektywności z nieoptymowanych zapytań niż z "złego" wyboru. NET construct. Przynajmniej to było moje doświadczenie.

 84
Author: ZombieSheep,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-30 10:31:05

Jedną z głównych różnic jest to, że zbiory danych mogą zawierać wiele tabel i można zdefiniować relacje między tymi tabelami.

Jeśli zwracasz tylko jeden zestaw wyników, chociaż myślę, że DataTable byłby bardziej zoptymalizowany. Myślę, że musi istnieć pewien narzut (przyznany mały), aby zaoferować funkcjonalność, którą wykonuje zbiór danych i śledzić wiele tabel danych.

 19
Author: Joshua Hudson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-08 00:19:14

W 1.x kiedyś były rzeczy, których DataTables nie mógł zrobić, które zbiory danych mogły (nie pamiętam dokładnie, co). Wszystko to zmieniło się w 2.x. domyślam się, że dlatego wiele przykładów nadal używa zestawów danych. Bazy danych powinny być szybsze, ponieważ są bardziej lekkie. Jeśli wyciągasz tylko jeden zestaw wyników, to najlepszy wybór między nimi.

 6
Author: Karl Seguin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-05 13:10:26

Jedną z cech zbioru danych jest to, że jeśli możesz wywołać wiele poleceń select w swoich procedurach składowanych, zbiór danych będzie miał po jednym dla każdego z nich.

 6
Author: Shawn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-05 13:15:53

Istnieją pewne optymalizacje, których możesz użyć podczas wypełniania danych, takie jak wywołanie BeginLoadData (), wstawianie danych, a następnie wywołanie EndLoadData (). To wyłącza pewne wewnętrzne zachowanie w DataTable, takie jak utrzymanie indeksu, itp. Zobacz Ten artykuł aby uzyskać więcej szczegółów.

 3
Author: tbreffni,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-14 02:55:38

Kiedy i tak masz do czynienia tylko z jedną tabelą, największą praktyczną różnicą, jaką odkryłem, jest to, że DataSet ma metodę "HasChanges", ale DataTable nie. Oba mają jednak "GetChanges", więc możesz go użyć i przetestować dla null.

 0
Author: mickeyf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-05 15:50:19