는 정상의 LINQ 표현이 같은 것 생각해
내가 넣어하기로 결정한다면LINQ 저장 프로 시저와 (L2E)와 된 IQueryable
IQueryable<Person> personQuery= (from ppl in PersonContext
select ppl).ASQueryable();
List<Person>personList = personQuery.where(x => x.age==13).ToList();
을 (이 일을 더 이해할 수 있도록 단지 샘플입니다) 저장 프로 시저 내에서 linq 쿼리의 첫 번째 부분은
일이 이런 식으로 작동합니다.
IQueryable<Person> personQuery= PersonContext.sp_RetrievePerson().ASQueryable();
List<Person> personList = personQuery.where(x => x.age==13).ToList();
그래서 첫 번째 방법은 toList()가 호출 될 때만 SQL 호출을 보냅니다. 다른 말로
, 실행을 위해 SQL로 전송되는 쿼리는 다음 쿼리 실행을 위해 전송됩니다 얼마나 많은 시간을
Select * from Person where age=13
그러나 방법 2
가 될 것인가?저장 프로 시저가 더 빠른 실행을 위해 알려져 있고 SQL에 보낸 쿼리를 어떻게 표시 할 것인가 때문에 저장 프로 시저를 호출하는 것이 1 회만 전송되면 저장 프로 시저를 호출하는 것이 불필요합니까?
이것은 내가 추측하고있는 것입니다. 원인에 대해서는이 샘플 쿼리보다 복잡합니다. 나는 외부 조인과 노동 조합과 같은 것들에 관해서는 SQL에 능숙하지 못합니다. 하지만 LINQ 코딩을 사용하면 더 잘 조작 할 수 있으며 원인을 쉽게 유지할 수 있습니다. 내가 사용하고있는 테이블에는 최소한 5 개의 노동 조합이 포함되어 있습니다.이 노동 조합 세그먼트에는 외부 조인이 많이 있습니다. 요약하면, 그 쿼리를 작성한 사람은 너무 경건하지만 그것을 유지해야했습니다. –