2

더 나은 성능을 제공하는 엔티티 프레임 워크를 사용할 때 알고 싶습니다.EntityFramework에는 vs join 성능이 포함됩니다.

나는 당신이 당신의 entites 사이 외국 관계가있는 경우에, 위에 덮어 보내기를 이용하는 것이 바람직하다는 것을 읽었다.

외래 키 관계가있는 2 개의 다른 엔트리의 레코드로 1 행을 검색하는 경우 include over join을 사용하면 차이가 있습니까?

내가 가져 오는 레코드의 양이 join과 include 사이의 성능에 영향을 줍니까?

답변

6

profiling을 수행 할 것을 적극 권장합니다.

때로는 열심히로드하는 것 (.Include)이 좋거나 가끔씩 ;-) 프로필러에서 생성 된 T-SQL을 살펴보고 이유를 알 수 있습니다! 실행 계획을 살펴보십시오.

.Include 쿼리에서 일부 일대 다 관계를 시도하고 검색 할 데이터의 양을 살펴보십시오. 데이터에는 포함 된 모든 테이블의 행 수를 곱합니다. 많은 양의 중복 된 데이터가 와이어를 통해 끌어 당겨 높은 대역폭과 소비 및 성능 문제를 야기 할 수 있습니다.

관련 데이터 (지연로드없이)에 대해 간단하고 빠른 별도의 쿼리를 수행하는 것이 더 나은 경우가 있음을 기억하십시오. 쿼리하는 것이 더 효율적일 수 있습니다. 예를 들어 Customers을 입력 한 다음 Orders을 별도로 쿼리하고 EF가 자동으로 쿼리에 참여하게하십시오.

강력한 DBA 팀이 EF에서 생성 한 모든 쿼리를보고 있었기 때문에 개발자에게 .Include을 더 이상 사용하지 말 것을 권유했습니다.