나는 어디 상위 10에만 .Take()
사용하여지고 오전 200000 레코드 테이블이 있지만 약 10 초 데이터를 가져 오는 것입니다.엔티티에 Linq 매우 .Take() 메서드를 사용하여 느리다
내 질문은 : .Take()
메서드는 데이터베이스의 모든 데이터를 가져 와서 클라이언트 측에서 상위 10 개 필터를 사용합니까?
mylist = (from mytable in db.spdata().OrderByDescending(f => f.Weight)
group feed by mytable.id into g
select g.FirstOrDefault()).Take(10).ToList();
spdata()
는 저장 프로 시저에서 함수 가져 오기입니다 :
여기 내 코드입니다.
감사
당신은 프로파일 러 후크해야하는지는 데이터베이스에 대해 실행 궁금하다면 귀하의 DB 및 로그를 확인하는 것이 가장 좋은 방법입니다. – Chris
spdata()가 200,000을 반환하면 yes를 클라이언트 측에서 처리합니다. –
Chris의 방법 외에도 Linqpad를 사용해보고 생성 된 SQL을보기 위해 쿼리를 작성한 후 SQL보기로 전환하거나 중단 점을 넣을 수 있습니다 (이 방법으로 http://stackoverflow.com/questions/1412863/how -do-i-view-the-entity-by-the-entity-framework)를 사용하여 프로그램이 실행될 때 생성되는 내용을 확인할 수 있습니다. –