Mark가 지적했듯이 성능 차이를 찾기가 어려울 것입니다. 다른 요소가 더 중요하다고 생각합니다. 저에게는 항상 COALESCE를 사용하며이 중 대부분은 이미 귀 하나 Mark에 의해 언급되었습니다.
- COALESCE는 ANSI 표준입니다. 내 코드를 이식 할 것인지 걱정할 필요가 없습니다. 개인적으로 이것은 중요하지 않습니다. 왜냐하면 그러한 포트가 실제로 Celko의 교실 밖에서 발생하는 빈도를 알고 있기 때문에 일부 사람들에게는 이것이 이점입니다.
- 가독성에 대해 말한 것과는 달리 , ISNULL이 부울 (SQL Server에는 존재하지 않음)을 반환하는 다른 언어 또는 플랫폼에서 오는 사용자의 경우 ISNULL을 읽기 가 더 어려울 수 있습니다 . 물론, COALESCE는 철자가 더 어렵지만 적어도 잘못된 가정으로 이어지지는 않습니다.
- COALESCE (a, b, c, d)라고 말할 수 있듯이 COALESCE는 훨씬 유연합니다 .ISNULL을 사용하면 동일한 작업을 수행하기 위해 많은 중첩을 수행해야합니다.
또한 데이터 유형 / 정밀도 등이 다른 데이터 유형을 사용하는 경우 두 기능을 사용하여 데이터 유형 우선 순위를 처리하는 방법을 알고 있어야합니다.
노트
한 가지 예외가 있습니다. 이들은 현재 버전의 SQL Server에서 다르게 처리됩니다.
SELECT COALESCE((SELECT some_aggregate_query),0);
SELECT ISNULL((SELECT some_aggregate_query),0);
COALESCE
변형 실제로 실행한다 some_aggregate_query
(검사 값을 한 번, 그리고 한번 리턴 할 때 제로가 아닌) 회 동안 ISNULL
한번만 서브 쿼리를 실행한다. 나는 다른 몇 가지 차이점에 대해 이야기합니다.
COALESCE
가 두 번 평가