2011-11-21 3 views
0

LINQ 쿼리가 있습니다. 이 쿼리는 데이터베이스에서 10000 개의 레코드를 검색합니다. 그러나이 쿼리의 실행에는 약 2 분의 시간이 걸립니다. 그 이유는 무엇일까요? 데이터는 목록의 DataGridView에 표시됩니다.LINQ - .tolist()

+1

"ToList()"를 실행하지 말고 대신 IEnumberable 또는 IQueryable 형식으로 결과를 사용할 수 있습니까? –

+1

정보가 충분하지 않습니다. 데이터베이스에 빠르게 연결할 수 있습니까? 적절한 조인, 인덱싱 등이 있습니까? 네비게이션 속성을 포함하고 있습니까? 많은 양의 데이터를 구체화하고 상태 추적을 설정하는 것은 저렴한 작업이 아닙니다. 실제 설명 (또는 코드!)없이 "내 코드가 느리다"고 말하면 특히 유용하지 않습니다. –

+1

DataGridView에 추가하는 것이 아니라 느린 ToList()입니다. –

답변

1
  1. SQL Server 프로파일 러가 실행됩니다 (SQL 관리 Studio의 도구 메뉴에 있음).
  2. 생성 된 실제 SQL 쿼리를 조사하여 쿼리가 실제로 쿼리에 10.000이 아닌 쿼리를 제공하는지 확인합니다. 때로는 linq-to-sql이 SQL로 좋은 변환을하지 못합니다.
  3. 실행 된 쿼리를 복사하십시오.
  4. SQL 관리 스튜디오 창에 쿼리를 붙여 넣습니다.
  5. "실제 쿼리 계획"사용
  6. 쿼리를 실행하고 쿼리 계획을 확인하여 새로운 인덱스가 있는지 확인하십시오. 그들을 만들고 재 시도하십시오.
+0

Postgres에 관한 내용입니다. http://stackoverflow.com/questions/8184050/linq-to-postgresql –

관련 문제