수행 할 데이터 분석이 있습니다. 평균적으로 이는 50K-150K 행의 어딘가에 포함됩니다. 이 행에서 5 가지 기준에 따라 Sum (X) 및 Count (X)의 합계를 추출해야합니다. 여기에는 두 가지 방법이 있습니다 :SQL Server 또는 .NET에서 데이터 분석 수행?
- 각각 10 개의 다른 쿼리를 작성합니다. 각 쿼리는 Sum() 또는 Count()를 사용하여 열 X의 데이터를 집계하도록 설계되었습니다. 각각을 실행하고 SqlCommand.ExecuteScalar()를 사용하여 결과를 검색하십시오.
- 다른 조건을 평가하는 데 필요한 다양한 매개 변수를 모두 포함하는 사용자 지정 개체를 만듭니다. SqlCommand.ExecuteDataReader()를 사용하여 모든 다른 조건부 하위 집합을 포함하는 수퍼 집합을 만드는 데 필요한 모든 데이터를 반환하는 쿼리를 하나만 실행합니다. DataReader의 각 행을 새 개체로 읽어 각 개체를 List 컬렉션에 추가합니다. 하나의 모든 데이터가 검색되고 Linq-to-Object를 사용하여 다른 조건에 따라 필요한 다른 Sum() 및 Count() 값을 결정합니다.
나는 어느 것이 가장 빠르는지 알아보기 위해 노력할 수 있음을 알고 있지만 어느 것이 더 빠를지에 대한 커뮤니티의 조언에 관심이 있습니다. SQL Server와 Web Server가 각각 자신의 컴퓨터에서 실행되고 각각 충분한 메모리가 있다고 가정합니다.
지금 나는 옵션 1에 기대고 있습니다. DB에 더 많은 쿼리가 있지만 DB 자체가 모든 집계 작업을 수행하고 SQL Server와 웹 서버간에 데이터가 거의 전달되지 않습니다. 옵션 2를 사용하면 단 하나의 쿼리 만 있지만 대용량의 데이터를 .Net으로 전달합니다. 그런 다음 .Net은 집계 함수와 관련하여 모든 무거운 작업을 수행해야합니다. SQL Server가 이러한 유형의 큰 집계 함수를 실행하는 데 더 효율적이라고 생각합니다.)
어떤 방법으로 가고 싶은 생각이 있습니까 (아니면 내가 놓친 세 번째 옵션)?
이 일회성 것입니다, 또는 당신이 그것을 반복해야합니까? 그것을 반복해야 할 경우 쿼리가 전혀 변경되지 않습니까? 다른 날짜 범위 등? – DOK
반복해야합니다. 반복 될 필요가있을 때마다 집계 및 필터링을위한 중요한 열의 열 이름이 변경되므로 SQL을 다시 생성해야합니다 (LinqToSql은 옵션이 아니므로). –