2010-06-03 3 views
1

설명해주십시오.서브 쿼리를 고려해 질문을

a) 상관되지 않은 부속 조회를 대체하기 위해 "부속 조회 인수 지정"이 사용됩니다. 상관 하위 쿼리는 어떻습니까? 상관 하위 쿼리를 'WITH'절 섹션으로 이동하는 방법이 있습니까?

b) 정확히 "subquery" "subquery factoring"이 정확히 한 번 실행됩니까?

C) 하나는 "서브 쿼리 팩토링"대 "하위 쿼리"더 나은

감사합니다.

답변

2

하위 쿼리 인수 분해를 사용하여 상관되지 않은 하위 쿼리를 대체 할 수 있습니다.
상관 관계가있는 하위 쿼리의 경우 지구상에서 어떻게 제안합니까?

(b) 부분을 이해하지 못하겠습니까?
당신이 의미하는 바를 짐작할 수 있습니다 : WITH 절의 하위 쿼리는 대개 기본 쿼리가 실행되기 전에 한 번만 실행됩니다.

대용량 데이터 집합의 경우 모든 경우가 아닌 대부분의 경우 하위 쿼리를 한 번만 실행하기 때문에 서브 쿼리 팩토링이 분명히 좋습니다. 더 작은 데이터 세트의 경우 임시 테이블 생성의 오버 헤드가 실제 쿼리보다 오래 걸릴 수 있습니다.

위에서 언급 한 성능 문제 외에도 서브 쿼리 팩토링은 훨씬 깨끗하고 유지하기 쉬운 코드를 생성합니다. 당신은 정말 하위 쿼리를 사용하여 인수를 다시 용어는 "서브 쿼리 팩토링"으로

+0

"WITH 절의 하위 쿼리는 대개 기본 쿼리가 실행되기 전에 한 번만 실행됩니다." 그래서 하위 쿼리 인수 분해는 독립적으로 정확하게 수행됩니다. 따라서 상관 관계가있는 하위 쿼리를 완전히 대체하는 데는 사용할 수 없습니다. – Sujee

+0

상관 관계가있는 하위 쿼리를 WITH 절에 넣을 수있는 방법이 없습니다. 상관 된 부속 조회는 실행하기 위해 기본 조회의 값을 필요로하는 부속 조회입니다. – bernie

+0

감사합니다. Adam Bernier. – Sujee

1

을 의미합니까? 리팩토링은 결과를 변경하지 않고 유지 보수 및 가독성을 개선하기 위해 루틴을 변경하는 프로세스입니다. 하위 테이블을 공통 테이블 식으로 리팩토링 할 수없는 경우가 있습니다 (WITH 절로). 또한 항상 CTE를 사용하거나 항상 하위 쿼리 (또는 파생 테이블)를 사용하는 것에 대한 황금률은 없습니다. 어떤 접근 방식이 가장 잘 수행되는지는 데이터와 DBMS에 따라 다릅니다.

+0

내 질문에, "하위 쿼리 분해"는 전통적인 하위 쿼리를 대체하기 위해 'WITH'절 사용을 의미합니다. – Sujee

관련 문제