2014-01-17 2 views
2

'from'절 또는 'join'절을 사용할 때 많은 테이블을 조인 할 때 차이가 있습니까? 되돌아 오는 결과 집합은 같습니다. (접합 테이블을 포함하여) 많은 관계로 많은 예를 들면 세 개의 테이블을대 Linq to 대입

가지고 : 학생, StudentCourses, 코스 :

var query = from student in context.Students 
      from studentcourse in student.StudentCourses 
      where studentcourse.CourseID == 4 
      select student; 


var query = from student in context.Students 
      join studentcourse in context.StudentCourses 
      on student.StudentID equals studentcourse.StudentID 
      where studentcourse.CourseID == 4 
      select student; 
  1. 그들 중 하나가 가장 좋은 방법이 될 것인가?
  2. 성능? 하나가 다른 것보다 낫습니까? SQL 프로파일 러 중 하나에 대한 기회가 없었습니다. 나는 두 가지 이유로 포함하여 피할 수있어

는 :

  1. 나는 조건은 따라서 두 가지 기술 위, 종종 이상 포함해야합니다.
  2. 내가 읽은 것으로부터, Include는 전체 관련 테이블을 반환하고, 성능에 대해 과세 할 수 있습니다.

답변

0

내부적으로 LINQ to Entities는 두 개의 다른 쿼리를 만듭니다. 첫 번째 예제에서는 WHERE를 사용하고 두 번째 쿼리는 테이블을 조인합니다. 그러나 SQL Optimizer는이 두 쿼리에 대해 동일한 실행 계획을 생성하므로 성능에 아무런 영향을 미치지 않습니다. Inner join vs Where

최선의 방법은 첫 번째 옵션이 거의 항상 바람직하다는 것입니다. 탐색 속성을 사용하면 코드를 읽고 이해하기가 쉬워지고 테이블에 직접 참여해야하는 번거 로움을 해결할 수 있습니다.