2010-03-11 2 views
2

과 함께 new {[object] .value1, [object] .value2}를 선택하십시오. 여러분 중 일부 전문가가이 질문에 대한 답을 알고 있기를 바랍니다. 어느 것이 더 빠릅니까? A 또는 B빠른 무엇입니까? [object]를 선택하거나 linq

A :

var item = from d in database 
      select d; 

B : 겉으로

var item = from d in database 
      select new {d.item1, d.item2}; 

, 그것은 전체 개체를 선택보다 빠른 것 테이블 오브젝트의 일부를 선택처럼 보이지만, 뭔가 나 자신에게 말한다 꼭 그런 것은 아닙니다.

+7

두 가지 방법으로 십만 번 시도하십시오. StopWatch 클래스를 사용하여 시간을 측정하십시오. 결과의 평균을 취하십시오. 그러면 답을 알게 될 것입니다. –

+0

Eric과 완전히 동의했습니다. 의심 할 때 측정합니다. –

+0

이것이 Linq-to-SQL 인 경우 두 번째는 훨씬 빠르며 실제 선택은 미미할 수 있지만 익명 객체에 대한 객체 추적의 부족은 훨씬 많은 차이를 만듭니다. –

답변

4

LINQ 쿼리를 SQL로 변환하면 데이터베이스에서 더 적은 결과를 반환하므로 두 번째 쿼리가 더 빠릅니다.

첫 번째 쿼리는 해당 엔터티에 해당하는 데이터베이스 행의 모든 ​​필드를 반환합니다. 두 번째 필드는 value1value2에 해당하는 두 필드 만 반환합니다.

+0

내가 생각했던 것이 야. 전체 테이블 행이 반환 될지 확실하지 않았습니다. 두 항목이 검색되었거나 행의 두 항목 만 검색되는 방식이라고 말한 경우입니다. – Darcy

+0

익명 형식이기 때문에 변경 추적이 필요 없으며 조금 저장됩니다. – Steven

0

모든 것은 개체의 크기에 따라 다릅니다.

성능이 저하되면 최적화를 위해 조회 테이블 등을 만들어야 할 때만 정상적으로 수행합니다.

관련 문제