2015-01-15 5 views
2

인터넷상의 기사에서는 사용자 정의 함수가 성능에 부담을 주거나 성능을 향상시킬 수 있다고합니다.SQL 표준 성능과 T-SQL 확장 기능

이제 표준 SQL은 매우 제한적이지만 T-SQL 기본 제공 함수처럼 일부 동작은 여전히 ​​작성 될 수 있습니다.

예 : adddays()dateadd(). 또 다른 포인트는 isNull()이 아닌 ANSI 표준 함수 coalesce()을 사용하는 것이 더 좋다고 들었습니다.

ANSI SQL 표준 함수와 T-SQL 함수의 성능 차이는 무엇입니까?

T-SQL은 성능 향상에 어떠한 부담도 줍니까?

내 연구는 추세를 나타내는 것 같지 않습니다.

+1

내장 함수는 UDF 함수보다 뛰어나지 만 올바르게 사용되지 않으면 주요 성능 문제가 발생할 수 있습니다. 예를 들어 where 절에서 이들을 사용할 때. coalesce가 isnull보다 낫다는 것을 모르지만 isnull이 t-SQL 인 ANSI와 호환됩니다. 두 가지는 반환되는 데이터 유형과 관련하여 작업 방식에 약간의 차이가 있습니다. –

+0

고맙습니다. 그러나 ANSI 기본 제공 함수를 T-SQL 전용 함수와 비교하는 경우에는 어떻게해야합니까? 실제 성능 차이가 있습니까? 나는 그들이 다르게 일할 것이라는 것을 안다. 그러나 동일한 결과를 제공하는 두 가지 기능 중 하나가 선택되면 동일한 방식으로 사용하게됩니다. 실적이 달라질 수있는 기회가 아직 남아 있습니까? –

+1

아래에 명시된 바와 같이 사례별로 테스트해야합니다. 일반적으로 (사용법이 SAARGable이 아닌 쿼리를 작성하지 않는다고 가정 할 때) 차이점은 거의 없습니다. –

답변

4

사례별로 사례에 접근하여 실제 테스트를 수행해야합니다. Microsoft는 전체 스택을 가능한 한 잘 수행하려고 시도하는 것 외에 일반적인 규칙은 없습니다. 테스팅은 당신이해야 할 일입니다. 우리는 항상이 더 빠를 것이라고 말할 수는 없습니다. 그것은 정말 나쁜 조언 일 것입니다.

데이터 (실제로는 사본)에서이 테스트를 수행하는 것이 중요합니다. 자신이 아닌 데이터 세트에 대해 수행 된 테스트에 의존하지 마십시오. 기능의 성능 차이에 대해 이야기 할 때, 아주 미묘한 것들이 큰 차이를 만들 수 있습니다. 테이블 크기, 관련된 데이터 형식, 인덱싱 및 SQL Server 버전과 같은 항목은 이러한 테스트의 결과를 변경할 수 있습니다. 이것이 바로 "아무도이 일을하지 않은 이유"입니다. 우리는 할 수 없습니다.

+0

고맙습니다. 아무도이 일을하지 않은 것은 부끄러운 일입니다. 나는 또한 테스트를 통해 사례에 대한 구글 봤는데, 나는 몇 가지 테스트를 발견했지만 SQL 기능 대 T - SQL 기능 (동일한 동작을 달성하려고)의 관점에서 아니야. 그걸 발견하는 것은 흥미로울 것입니다. T-SQL로 작성하는 사람들은 그것에 대해서 생각조차하지 않을 것이라고 생각합니다. –

+3

대소 문자를 구분하여 쟈스민은 각 기능을 보는 것을 의미하지 않습니다. 대신 쿼리 수준 검사를 수행합니다. 하나의 쿼리에서 제대로 작동하는 것은 다른 쿼리에서 동일하게 보장되지 않습니다. 일반적으로 나는 그것에 대해 많이 걱정하지 않을 것입니다. ISNULL과 COALESCE 사이의 성능 차이 (매개 변수의 합리적인 수)는 무시할 수있을 정도로 측정 할 수 없을 수도 있습니다. –

+0

편집을 참조하십시오 - 왜이 테스트를 수행 할 수있는 사람이 누구인지 설명합니다. – Jasmine