면책 조항 : 아래의 모든 것은 일 화일 뿐이며 제 개인적인 경험에서 직접 가져온 것입니다. 좀 더 경험적으로 엄격한 분석을 수행하는 것에 동의하는 사람은 누구나 그것을 수행하고 내가 있다면 반대 투표를 할 수 있습니다. 또한 SQL이 선언적 언어라는 것을 알고 있으며 코드를 작성할 때 코드가 처리되는 방식을 고려할 필요가 없지만 제 시간을 소중히 여기기 때문에 그렇습니다.
논리적으로 동등한 문장이 무한하지만 세 가지 (ish)를 고려할 것입니다.
사례 1 : 표준 순서로 두 개의 비교 (평가 순서 고정)
A> = MinBound AND A <= MaxBound
사례 2 : Syntactic sugar (평가 순서는 저자가 선택하지 않음)
MinBound와 MaxBound 사이
사례 3 : 교육 된 순서로 두 가지 비교 (작성시 평가 순서 선택)
A> = MinBound AND A <= MaxBound
또는
A <= MaxBound AND A> = MinBound
내 경험상 사례 1과 사례 2는 데이터 세트를 무시하기 때문에 성능면에서 일관되거나 눈에 띄는 차이가 없습니다.
그러나 사례 3은 실행 시간을 크게 향상시킬 수 있습니다. 특히, 대규모 데이터 세트로 작업하고 A 가 MaxBound 보다 크거나 MinBound 보다 작은 지 여부에 대한 경험적 지식 이있는 경우 는 비교 사례 3을 사용하고 주문하여 눈에 띄게 실행 시간을 향상시킬 수 있습니다 따라서.
한 가지 사용 사례는 특정 간격 내의 레코드에 대해 인덱싱되지 않은 날짜가있는 대규모 기록 데이터 세트를 쿼리하는 것입니다. 쿼리를 작성할 때 지정된 간격 이전 또는 지정된 간격 이후에 더 많은 데이터가 존재하는지 여부를 알 수 있으며 이에 따라 비교를 정렬 할 수 있습니다. 데이터 세트의 크기, 쿼리의 복잡성, 첫 번째 비교에서 필터링 된 레코드의 양에 따라 실행 시간이 절반으로 단축되었습니다.