2011-09-12 9 views
2

저는 개발을하고있는 서버가 두 대 있고 DBA가 아니지만 서버가 없으므로 성능 문제를 파악하려고합니다. 로컬로 SQL Server 2008 R2가 설치되어 있고 사용중인 ORM이 쿼리를 실행하면 결과가 1 초 이내에 반환됩니다. SQL Server 2005를 사용하여 개발 서버에서 정확히 동일한 쿼리를 실행하면 1 분 이상 소요됩니다. 두 가지 모두 실행 계획을 살펴 보았습니다. 가장 중요한 것은 쿼리의 마지막 두 줄이 order by 문을 가졌습니다. 2005 서버의 경우 비용의 100 %입니다. 2008 서버에서 비용의 0 %를 차지합니다. 내가 간과하고있는 일종의 설정이 있습니까? 두 개의 서버는 로컬 사본이 백업에서 복원 된 것이므로 거의 동일한 데이터와 동일한 색인/키/등을 가지고 있습니다.SQL 서버 실행 계획 질문

내 생각에 2005 서버가 모든 테이블을 정렬하고 나에게 결과 (200 줄)를 제공합니다. 2008 서버가 모든 결과를 얻은 다음 정렬합니다. http://pastebin.com/sUCiVk8j

링크 빠른 실행 계획 : (. 200 개도 결과)

링크는 실행 계획 둔화 내가 쿼리를 게시 할 http://pastebin.com/EdR7zFAn

을하지만, 포함 그리고 내가 무리가 있기 때문에 그것은 긴 불쾌하다 Entity Framework에서 쿼리를 생성합니다.

미리 감사드립니다.

편집 :이 쿼리를 실행하는 동안 CPU가 100 %로 실행되는 SQL 서버에서 작업 관리자를 열었습니다.

편집 : jsfiddle.net에 XML 버전이 추가되었습니다. pastebin은 크기 때문에 나를 허용하지 않을 것입니다. XML 용 CSS 창을 사용했습니다.

실제 2008R2 : http://jsfiddle.net/wgsv6/2/ 실제 2005 : 하드

+4

임원 계획 게시 – JNK

+0

200 개의 행을 정렬하면이 시간 차이가 발생하지 않아야하므로 예상 비용이 줄어들 것입니다. 2005 년 서버에서 통계를 업데이트해야 할 수도 있습니다. 두 버전의 계획에 표시된 비용은이 통계를 기반으로 한 추정치입니다. 계획의 예상 행과 실제 행 사이에 불일치가 있습니까? –

+0

도 이러한 실제 또는 예상되는 실행 계획입니까? – JNK

답변

0

쿼리를 보지 않고 말할 수 있지만,이 가능 http://jsfiddle.net/wgsv6/3/ 당신이 느린 서버에 인덱스를 누락?

+0

그것은 가능하지만, OP는 "같은 인덱스/키 등"을 말했어 ... 나는 그것이 세 가지 중 하나라고 추측 할 것입니다. 오래된 통계, 매개 변수 스니핑 또는 불필요한 정렬로 인한 잘못된 추정 (위의 원인 중 하나 일 수 있음). 그러나 추측하기 전에 실제 계획을 보는 것이 좋을 것입니다. –

+0

아, 어떻게 든, 감사합니다. 이 경우 목록에있는 것 중 하나가 아마도 그 것입니다. – JohnD

0

통계가 dev 서버에서 유효하지 않을 수 있습니다.

+0

질문을 한 직후 몇 시간 전에 'EXEC sp_updatestats'를 실행했습니다. 어떤 결과도 바뀌지 않았습니다. –