LINQ-to-SQL을 사용하여 SELECT TOP 5와 동일한 성능을 수행하는 방법을 살펴본 결과 모든 대답은 .Take()를 사용하는 것이 좋습니다 그래서 :"SELECT TOP {x}"쿼리를 사용하여 LINQ to SQL 성능
var myObject = (
from myObjects in repository.GetAllMyObjects()
select myObject)
.Take(10);
아직 LINQ는 뒤의 장면을 어떻게 작동하는지하지만 C와 같은 언어에 대한 이해에 가장이가 먼저 모든 레코드를 포함하는 임시 배열을 할당 복사에 의해 해결하는 것이 이해가 안 돼요 배열의 처음 10 개 요소를 var. 작은 데이터 셋이나 성능 제약이 없다면 그런 문제는 아니지만, 예를 들어, 수백만 개의 레코드를 포함 할 수있는 테이블에서 가장 최근의 5 개의 로그 항목을 선택하는 경우 나에게 비효율적 인 것처럼 보입니다.
이것이 어떻게 잘못 됐는지를 이해하고 있습니까? 그렇다면 누군가 실제로 일어난 일을 설명 할 수 있습니까? 그렇지 않으면 LINQ-to-SQL을 통해 x 레코드를 선택하는 것보다 (즉, 더 효율적인) 더 나은 방법은 무엇입니까?
[편집]
내가 허용 대답의 제안에 따라 디버그 출력에 LINQ - 투 - SQL 출력을 보내는 가상 즉, myObject 클래스가 있습니다. 나는 여기에서 DebuggerWriter를 사용하여 끝냈다 : http://www.u2u.info/Blogs/Kris/Lists/Posts/Post.aspx?ID=11
디버거에서 Linq 개체를 검사하면 실행할 SQL 쿼리가 표시됩니다. 어쩌면이게 도움이 될까요? –