복붙노트

[SQL] 표준 조인을 대하면 SQL 하위 쿼리를 사용 하는가?

SQL

표준 조인을 대하면 SQL 하위 쿼리를 사용 하는가?

좀 잘못 작성된 SQL 쿼리를 재 작성 작업을하고 그들은 하위 쿼리를 과도하게 사용하고 있습니다. 나는 서브 쿼리의 사용에 대한 모범 사례를 찾고 있어요.

어떤 도움을 주시면 감사하겠습니다.

해결법

  1. ==============================

    1.하위 쿼리는 일반적으로 잘 그들이 (도 상관 하위 쿼리라고도 함)에 의존 서브 쿼리가 아니라면 있습니다. 당신은 독립적 인 하위 쿼리를 사용하고 적절한 인덱스를 사용하는 경우, 그들은 신속하게 실행해야합니다. 당신이 따라 하위 쿼리가있는 경우 종속 하위 쿼리는 일반적으로 외부 쿼리의 각 행에 대해 한 번 실행해야하기 때문에 성능 문제로 실행될 수 있습니다. 당신의 외부 쿼리 1000 개 행이 그래서 만약, 부질 1000 번 실행됩니다. 반면에 독립적 인 하위 쿼리는 일반적으로 한 번만 평가 될 필요가있다.

    하위 쿼리는 일반적으로 잘 그들이 (도 상관 하위 쿼리라고도 함)에 의존 서브 쿼리가 아니라면 있습니다. 당신은 독립적 인 하위 쿼리를 사용하고 적절한 인덱스를 사용하는 경우, 그들은 신속하게 실행해야합니다. 당신이 따라 하위 쿼리가있는 경우 종속 하위 쿼리는 일반적으로 외부 쿼리의 각 행에 대해 한 번 실행해야하기 때문에 성능 문제로 실행될 수 있습니다. 당신의 외부 쿼리 1000 개 행이 그래서 만약, 부질 1000 번 실행됩니다. 반면에 독립적 인 하위 쿼리는 일반적으로 한 번만 평가 될 필요가있다.

    당신이있는 하위 쿼리 의미하는지 무엇을하지 않은 경우 의존 또는 엄지 손가락의 규칙이있어 여기에 독립적 - 당신이 부질을 문맥에서 제거를 실행하고 독립적 인 하위 쿼리의 다음 결과 세트를 얻을 수 있다면.

    이 서브 쿼리의 일부 테이블의 외부 다음의 종속 하위 쿼리를 의미하기 때문에 구문 오류가 발생하는 경우.

    물론 일반적인 규칙은 몇 가지 예외가있다. 예를 들면 :

    성능이 문제가되는 경우 특정 쿼리를 측정하고 당신을 위해 가장 적합한 참조하십시오.

  2. ==============================

    2.여기에는 특효약이 없다. 각각의 모든 사용은 독립적으로 평가되어야한다. 상관 관계 서브 쿼리가 비효율적 일반 몇 가지 경우가 있습니다, 다음이 하나 더 나은이 가입으로 작성

    여기에는 특효약이 없다. 각각의 모든 사용은 독립적으로 평가되어야한다. 상관 관계 서브 쿼리가 비효율적 일반 몇 가지 경우가 있습니다, 다음이 하나 더 나은이 가입으로 작성

    select nickname, (select top 1 votedate from votes where user_id=u.id order by 1 desc)
    from users u
    

    반면에, 존재하지 쿼리가 조인을 통해 밖으로 이길 것이다 존재한다.

    select ...
    where NOT EXISTS (.....)
    

    일반적으로보다 빠른가요

    select ...
    FROM A LEFT JOIN B
    where B.ID is null
    

    그러나 심지어 이러한 일반화는 특정 스키마 및 데이터 배포에 대한 사실이 될 수 있습니다.

  3. ==============================

    3.불행히도 대답은 크게 사용하고있는 SQL 서버에 따라 달라집니다. 이론적으로,보기의 순수 관계형 이론의 관점에서 있습니다 더 나은 합류했다. 그들은 서버가 후드 아래에 옳은 일을하게하고 그들에게 더 제어 할 수있어 결국 빠를 수 있습니다. 서버가 잘 구현됩니다. 당신이 하위 쿼리 등을 통해의 쿼리를 최적화로를 속일 경우 실제로, 일부 SQL 서버는 더 나은 수행합니다.

    불행히도 대답은 크게 사용하고있는 SQL 서버에 따라 달라집니다. 이론적으로,보기의 순수 관계형 이론의 관점에서 있습니다 더 나은 합류했다. 그들은 서버가 후드 아래에 옳은 일을하게하고 그들에게 더 제어 할 수있어 결국 빠를 수 있습니다. 서버가 잘 구현됩니다. 당신이 하위 쿼리 등을 통해의 쿼리를 최적화로를 속일 경우 실제로, 일부 SQL 서버는 더 나은 수행합니다.

  4. from https://stackoverflow.com/questions/4799820/when-to-use-sql-sub-queries-versus-a-standard-join by cc-by-sa and MIT license