2009-07-18 5 views
0

linqtosql 쿼리 필터링 및 20 초 실행하는 데 datecolumn에 의해 순서가 있어요. 생성 된 sqlquery를 DB에서 직접 실행하면 0 초 안에 반환됩니다.LinqToSQL DateTime 필터?

var myObjs = DB.Table 
.Where(obj => obj.DateCreated>=DateTime.Today) 
.OrderByDescending(obj => obj.DateCreated); 

표에는 100,000 개의 레코드 만 있고 DateTime 열에는 색인이 생성됩니다.

긴 줄의 linqtosql 성능 문제로 인해 또 다른 문제가 발생합니다. 하지만 이건 너무 나쁜 일인 것 같아.

답변

1

차이점은 생성 된 쿼리를 실행하는 데는 0 초 밖에 걸리지 않지만 실제로는 엔터프라이즈 관리자와 같은 것을 사용하는 경우 모든 결과가 표시되지 않기 때문입니다. 100,000 개의 결과에 대한 모든 데이터를 가져 와서 역 직렬화하면 상당한 시간이 걸릴 수 있지만 수동 쿼리는 아마도 처음 20 개의 히트 나 비슷한 것을 보여줄뿐입니다.

.NET에서 동일한 SQL을 실행하고 DataReader을 사용하여 모든 데이터를 가져 오는 경우 얼마나 걸리나요?

프로파일 링을 사용하여 서버를 실행하는 경우 쿼리가 LINQ에서 SQL로 실행되는 데 걸린 시간은 얼마나됩니까?

0

검색어에 이상이없는 것 같습니다. Linq가 생성 한 T-SQL을 보는 것은 좋을 것입니다. 너 그거 해봤 니?

1

고마워 ...

문제는 광산,하지 LINQ 년대이었다. 간단히하기 위해 질문에서 질의를 짧게했지만 NON 색인 열에 적용된 필터가 실제로있었습니다. 색인을 추가하면 문제가 해결됩니다.

Jon Skeet이 제안한 것처럼 Sql Mgmt 스튜디오에서 쿼리를 실행하면 쿼리가 호출되고 매우 빠르게 20 개의 행이 반환되므로 자신감이 떨어졌습니다. linq이 탓할 것이라고 생각했다. 그래서 색인 문제는 linq에서만 나타나고 SQL mgmt studio에서는 나타나지 않습니다.