현재 DataTable을 사용하여 코드에서 사용할 수있는 데이터베이스의 결과를 얻습니다.Datatable 대 데이터 집합
그러나 웹상의 많은 예제에서는 DataSet을 대신 사용하고 collections 메서드를 통해 테이블에 액세스합니다.
SQL 결과의 저장 방법으로 DataSets 또는 DataTables를 사용하면 성능면에서 유리합니까?
현재 DataTable을 사용하여 코드에서 사용할 수있는 데이터베이스의 결과를 얻습니다.Datatable 대 데이터 집합
그러나 웹상의 많은 예제에서는 DataSet을 대신 사용하고 collections 메서드를 통해 테이블에 액세스합니다.
SQL 결과의 저장 방법으로 DataSets 또는 DataTables를 사용하면 성능면에서 유리합니까?
정말로 가져 오는 데이터의 종류에 달려 있습니다. DataSet은 (사실상) DataTable 개체의 컬렉션이기 때문에 여러 개의 고유 한 데이터 집합을 단일 개체로 관리 할 수 있으므로 더 많은 개체를 관리 할 수 있습니다.
성능상으로, "잘못된".NET 구성 선택보다 최적화되지 않은 쿼리가 비효율적 일 수 있습니다. 적어도 그것은 제 경험이었습니다.
1.x에는 DataTables가 수행 할 수없는 작업 (이전에는 정확히 무엇을 기억하지 못했는지)이있었습니다. 모든 것은 2.x에서 변경되었습니다. 내 생각 엔 많은 예제가 여전히 DataSets을 사용하는 이유입니다. DataTables은 더 가볍기 때문에 더 빨라야합니다. 단일 결과 집합 만 가져 오는 경우 두 집합 사이에서 최상의 결과를 얻을 수 있습니다.
AFAIK 한 가지 큰 점은 DataTable을 직렬화 할 수 없어서 결과로 반환 될 수 없다는 것이 었습니다. WebService. –
DataSet의 기능 중 하나는 저장 프로 시저에서 여러 select 문을 호출 할 수 있으면 DataSet에 각각 하나의 DataTable이 있다는 것입니다.
하나의 SQLCommand에서 여러 SQL SELECT 쿼리를 실행하고 dataset.Tables [i]의 각 결과 집합에 액세스 할 수도 있습니다. – Jan
BeginLoadData()를 호출하고 데이터를 삽입 한 다음 EndLoadData()를 호출하는 등 DataTable을 작성할 때 사용할 수있는 최적화가 있습니다. 이렇게하면 인덱스 유지 관리와 같은 DataTable 내부 동작이 해제됩니다. 자세한 내용은 this article을 참조하십시오.
하나의 큰 차이점은 DataSets가 여러 테이블을 보유 할 수 있으며 이러한 테이블 간의 관계를 정의 할 수 있다는 것입니다.
하나의 결과 집합 만 반환하는 경우 DataTable이 더욱 최적화 될 것이라고 생각합니다. DataSet에서 수행하는 기능을 제공하고 여러 DataTable을 추적하려면 약간의 오버 헤드가 있어야한다고 생각합니다.
어쨌든 하나의 테이블 만 처리 할 때 가장 큰 실용적인 차이점은 DataSet에는 "HasChanges"메서드가 있지만 DataTable에는 없다는 것입니다. 두 가지 모두 "GetChanges"를 가지고 있으므로 null을 테스트하고 사용할 수 있습니다.
웹 응용 프로그램을 사용하는 경우 DataReader 사용을 고려할 수 있습니다. http://aspnet.4guysfromrolla.com/articles/050405-1.aspx http://aspnet.4guysfromrolla.com/articles/ 051805-1.aspx http://www.devx.com/vb2themax/Article/19887/1954?pf=true – GernBlandston