2009-02-04 3 views
2

내 현재 요구 사항 중 사용자가 일주일에 한 번 업데이트하고 특정 필드에 대해 해당 문서를 쿼리 할 수있는 Excel 스프레드 시트를 가져 오는 것입니다.Linq to XML과 OledbConnection이있는 Excel 간의 속도 차이는 무엇입니까?

지금 당장은 모든 Excel (2007) 데이터를 XML 파일로 푸시합니다 (파일을 업로드 할 때 한 번만 누른 다음 xml 만 사용하면 필요한 모든 데이터가 유지됩니다). 스프레드 시트의 모든 열이 아님) Linq-to-XML을 통해 쿼리합니다. xml 파일은 Excel보다 작습니다.

내 질문은 Linq XML 파일과 OledbConnection Excel 파일을 쿼리간에 성능 차이가 있습니까? 나는 다른 불필요한 단계를 추가하고 있습니까? 나는 후속 질문이 될 것이라고 생각한다. XML을 계속 사용하기 쉽도록 가치가 있는가?

파일의 길이는 약 1000 행입니다.

답변

4

일주일에 한 번만 수행되는 작업에 대해서는 최적화를 수행 할 필요가 없습니다. 대신 당신과 미래의 솔루션을 유지할 사람 모두에게 유지 보수가 가능하고 이해할 수있는 것에 집중해야합니다.

당신이 가장 자연스러운 :-)

1

SqlConnection을 사용하여 Excel 스프레드 시트에 액세스 할 수 없습니다. 아마도 OleDbConnection 또는 OdbcConnection을 사용하고 있습니다.

말했다되고 그건

, 나는 당신이 기본적으로 데이터를 처리로 엑셀 시트에 액세스 할 수는 OleDbConnection을 사용하여, 빠른 될 것이라고을 거라 생각하지만, 유일한 방법은 당신 사용하는가에있는 데이터를 알고 System.Diagnostics 네임 스페이스의 Stopwatch 클래스를 사용하거나 프로파일 링 도구를 사용하여 직접 테스트하십시오.

많은 양의 데이터를 처리하려면 SQL Server에 넣은 다음 데이터를 저장하는 데 걸리는 시간에 대한 쿼리 비율에 따라 쿼리하는 것이 좋습니다. .

+0

woops, 난 그 질문에 고정 - XML ​​파일도 네이티브 것입니다. 나는 스톱워치로 시험 할 것이다. – naspinski

1

파일로 어떤 유형의 쿼리를 수행하는지 논의하는 것이 중요하다고 생각합니다. 나는 다른 어떤 것보다 경험에서 더 많이 이야기하고 있지만 oledbconnection보다 LINQ를 사용하여 쿼리하는 것이 훨씬 쉽다고 믿어야합니다.

2

나는 사물의 성능 측면 Excel 데이터에 액세스하기위한 다음과 같은 의미를 알고있는 것처럼합니다.

가장 빠름 가장 느림
1. Excel 파일 형식에서 C++를 직접 사용하는 사용자 지정 타사 공급 업체 소프트웨어.
2. 데이터 형식에 필요한 경우 스키마 파일을 사용하는 OleDbConnection 메서드는 Excel을 플랫 파일 db로 처리합니다.
3. Linq 2 XML 방식 Excel 2007 파일 형식의 데이터 읽기/쓰기를위한 뛰어난 방법.
4. OOXML SDK 및 선택적으로 타사 XML 라이브러리를 사용하여 직접 XML 데이터 조작. 다시 Excel 2007 파일 형식으로 제한됩니다.
5. Object [,] 배열을 사용하여 셀 영역 (.Value2 prop 사용)을 읽고 Object [,] 배열을 다시 셀 영역 (다시 .Value2 prop)에 전달하여 데이터를 씁니다.
6. .Cells (x, y) 및 .Offset (x, y) 소품 접근자를 사용하여 셀에서 개별적으로 업데이트하고 읽습니다.

+1

질문에 대한 답변을 얻으려면 linq2XML을 통해 OleDbConnection을 사용하면 전반적인 성능이 약간 향상되지만 LINQ 코드는 유지 관리가 쉽고 작성하기가 쉽습니다. 또한 OleDbConnection 코드는 더 취약하며 데이터 영역이 정적 일 때만 실제로 유용합니다. 자주 업데이트되는 동적 데이터로 인해 프로그램하기가 어려울 수 있습니다. –