2013-01-11 2 views
0

실행 계획은 항상 100 %의 결과를 산출하므로 가장 높은 비율을 원하는 부분은 어느 정도의 어림짐작이 있습니까? 내가 SELECT 문을 수행 할 경우100 % 지출 할 곳을 어떻게 결정합니까?

는 예를 들어, 난 당신이 생각을

03% Hash Match 
02% Hash Match 
10% Hash Match 
01% RID Lookup 
09% RID Lookup 
04% Index Seek 
07% Index Seek (Nonclustered) 
01% Clustered Index seek 
18% Clustered Index seek 
35% Key lookup (Clustered) 
01% Nested Loops 

것을 볼 수 있습니다. 하나 또는 두 개를 버리면 용서해주세요. 그래서 제 질문은 : 그것이 좋은가요 아닌가요? SELECT 문을 사용하면 통계가 변경되지만 항상 100을 더할 것이므로 가장 높은 비율로 어떤 카테고리를 갖고 싶은지 알 수 없습니다.

+0

그분들의 작동은 진짜 질문은 "나는 쿼리의 현재 성능에 문제가 있나요?"입니다 그렇지 않으면 조기 최적화에 관여 할 필요가 없습니다. 그렇다면 백분율을 통해 가장 큰 투자 회수에 가장 적합한 방향을 파악할 수 있습니다. – HABO

답변

4

실제로 "클러스터 된 인덱스 찾기에 100 % 밀어 넣기"라는 목표는 없지만 가장 비용이 많이 드는 연산자에 초점을 맞추고 더 효율적으로 만들려고합니다. 물론, 쿼리가 처음에 성능 문제를 나타내는 경우입니다. 어떤 쿼리 계획에서 항상 "가장 비싼"연산자가 될 것입니다 -하지만 전체 쿼리가 얼마나 비쌉니까? 당신은 당신의 가장 무거운 타자들에게 시간을 보내고 있습니까? 어떻게 알았어? 아니면 35 % 운영자를보고 있으며 이미 2ms에서 실행되는 쿼리에서 여분의 나노초를 집어 넣으려고합니까?

실행 계획에 의존하지 마십시오. 실제 계획을 생성하십시오 (추정치에 대한 정보도 포함되어있어 SQL Server의 거리에 대한 정보를 얻을 수 있습니다).

특정 사례에 대한 한 가지 의견 : RID 또는 주요 조회를 없애기 위해 할 수있는 일을하고 싶습니다. 이는 잠재적으로 힙에 클러스터 된 인덱스를 추가하는 것 (힙에 대한 유스 케이스가 유효한가?)과 잠재적으로 클러스터 된 인덱스가있는 테이블의 기존 인덱스를 추가하거나 변경하는 것을 의미합니다.

은 내가보기 엔 당신은, SQL 서버 실행 계획 그랜트 Fritchey의 무료 전자 책을 잡아 추천 :

http://www.sqlservercentral.com/articles/books/65831/

나는 또한 매우 당신이 SQL Sentry Plan Explorer를 다운로드하고 그것을 시도를 제공하는 것이 좋습니다. 당신이 더 빨리 계획 문제를 파악하고 해결하는 데 도움 수 SSMS 실행 계획에 비해 몇 가지 장점이 있습니다

  • 색상이 가장 비싼 운영자에게 CPU에 의해
  • 쇼 비용 고장을 확장은, I/O, 또는 두 가지 모두
  • 항상
  • 이 교류에 대한 의미있는 정보 표시 (SSMS가 adds to way more than 100%many cases을)은 % 권리를 취득 (더 결정적 라인 폭을, 그리고 쇼 행 툴팁에보고하지 않고 계산 또는 데이터 크기) estimat 사이
  • 하이라이트 차이를 같은 조회 등의 에드 실제 행
  • 하이라이트 비싼 사업자 실제 계획을 생성 할 때, 우리는 CPU/지속 시간과 같은 런타임 통계를 포함
  • /
  • 과 톤을 읽고 (인덱스에서 누락 된 열을 식별) 다른 기능들 여기에서 자세히 설명하지 않겠습니다 ...

면책 조항 : 나는 SQL 센트리

+0

고맙다 Aaron. 이것은 나를 많이 읽게합니다. 고맙습니다. –

관련 문제