그래서 테이블/뷰 이름 또는 SQL 쿼리를 입력으로 가져 왔고 필터링하려면 WHERE
을 적용해야합니다.쿼리 성능 비교
SELECT * FROM (<ORIGINAL_QUERY_OR_TABLE_NAME>) WHERE <CONDITION>
: 꽤 많은 일을 할 수있는 이미 기존 WHERE
절에 대한 쿼리를 구문 분석하기 때문에, 나는 내가 우산SELECT
로 들어오는 질의를 둘러싸는 더 잘하고 이런 식으로 WHERE
을 추가 거라고 생각 나는 하위 쿼리를 작성했기 때문에 이것이 성능상의 불이익을 초래할 수 있다고 생각했기 때문에 원래 쿼리와 수정 된 버전에 대한 실행 계획을 만들었습니다. 나는 이제 내 앞에서 두 가지 계획을 가지고 있지만, 나는 그것들을 비교하는 방법을 모르겠다. 두 계획에 표시된 노드는 동일하며 비용은 상위 쿼리의 백분율로 표시됩니다.이 둘을 비교할 수있는 절대 값이 아닙니다.
그래서 내 질문은 : 난 정말이 좋은 방법 일
- 암; 즉, 실적 조회가없는 경우
- 두 실행 계획을 어떻게 비교합니까?
참고 : 이것은 SQL Server 2008 R2입니다.
편집 나는 단순히 문자열 WHERE
,의 기존의 테스트하여 들어오는 쿼리에 AND <CONDITION>
로 필터링 절을 추가하지 않았는지 궁금 사람들의
은 모든 것을 간단하지 않다 있습니다. 다음 쿼리를 고려하십시오
각 쿼리는 백분율을 볼 수 있습니다 당신은 두 개 (또는 그 이상)의 쿼리의 한 쿼리에서 실제 실행 계획을 실행할 수 있습니다,이 쿼리 사이의 상대적인 성능 차이를 참조하기 위해1. SELECT * FROM MyTable
2. SELECT * FROM MyTable WHERE MyField = 123
3. SELECT [WHAT], [WHEN], [WHERE] FROM MyTable
4. SELECT * FROM MyTable ORDER BY [WHERE]
TIME 및 IO 옵션을 사용하여 SET STATISTICS ON을 사용하여 어떤 쿼리에 시간이 많이 걸리는지 확인하지 마십시오. –
@PareshJ : 정말로 도움이됩니다. 두 쿼리 간의 시간 차이는 최소화됩니다. 60K 행에 대해 두 개의 쿼리는 각각 ** 2032ms ** 및 ** 2103ms **를 사용 했으므로 여기서는 꽤 안전하다고 생각합니다. – dotNET
측정 성능은 거의 항상보기보다 어렵습니다. 각 테스트를 실행하기 전에 캐시를 지우셨습니까? – HABO