2015-01-27 3 views
1

많은 유니온 alls, 내부 조인으로 복잡한 쿼리를 작성하려고하기 때문에 명확성을 위해 코드의 최상의 구조를 선택하고 싶습니다. 동일한 결과로 이어지는 두 가지 쿼리가 있습니다. 국제 대회는 무엇입니까? 중첩 SELECT 또는 WITH 문 또는 INSERT INTO 임시 테이블을 사용하는 것이 좋습니다? 당신은 TAB, 괄호 등WITH 대 내포 된 SELECT 또는 INSERT INTO @ temp?

첫 번째 쿼리

WITH BigPictureQuery AS 
    (
    SELECT BottomLevelQuery FROM TabA AS a 
    ) 
SELECT Something FROM BigPictureQuery 

두 번째 쿼리

SELECT Something FROM 
    (
    SELECT BottomLevelQuery 
    FROM TabA AS a 
    ) 
    AS BigPictureQuery 

답변

1

내가 찾을 비 재귀 CTE을 사용하는 이점을 사용하는 방법을 출판물에 저를 안내 할 수 있습니다 subquery 이상이면 범위에서 두 번 이상 referred이 될 수 있습니다.

하위 쿼리보다 읽기 쉽습니다. 현명한 두 가지 방법이 비슷합니다.

예 :

SELECT Something FROM 
(
SELECT BottomLevelQuery 
FROM TabA 
) 
AS A 
join 
(
SELECT BottomLevelQuery 
FROM TabA 
) 
AS A on a.BottomLevelQuery =b.BottomLevelQuery 
join 
(
SELECT BottomLevelQuery 
FROM TabA 
) 
AS C on a.BottomLevelQuery =C.BottomLevelQuery 
... 

은 분명히 CTE 여기

더 읽기처럼 CTE

WITH BigPictureQuery AS 
    (
    SELECT BottomLevelQuery FROM TabA AS a 
    ) 
SELECT Something FROM BigPictureQuery A 
join BigPictureQuery B on a.Something =b.Something 
join BigPictureQuery C on a.Something =C.Something 
.. 

subselect과 같은 일을 수행 할 쿼리가 될 것입니다