2010-11-29 3 views
3

가능한 중복 :
Is there something wrong with joins that don't use the JOIN keyword in SQL or MySQL?SQL - JOIN의 장점은 무엇입니까?

안녕, 조인없이

i'ave 항상 검색된 데이터 ...

하지만 이상 하나의 방법에 이점이 다른 사람?

select * from a INNER JOIN b on a.a = b.b; 

select a.*,b.* from a,b where a.a = b.b; 

고마워요!

+1

이 질문과 유사 (동일하지 않은 경우) : http://stackoverflow.com/questions/128965/is-there-something-wrong-with-joins-that-dont-use-the-join-keyword- in-sql-or-mys – ZoFreX

+3

이들 모두 조인입니다 ... – Donnie

답변

0

이들은 모두 조인입니다. 이들은 조인에 대한 두 가지 구문 표현입니다. 은 "가입"키워드를 사용하여 첫 번째는, (, (1992 년 나는 두 differeent 표현은 기능적으로 동일하며, 내부의 를 결합하는 경우

.) 생각하지만, 후자의 현재 ANSI 표준입니다 ANSI SQL92 표준 구문은 각 개별 조인 조건이 함께 조인되는 중간 결과 집합 쌍과 연결되기 때문에 모아레 읽기가 쉽습니다. 이전 표현에서는 조인 조건이 전체 쿼리와 함께 모두 있습니다 '조건을 필터링하고 어떤 것이 명확한 지 알 수 없습니다.이렇게하면 잘못된 조인 조건 (예 : 의도하지 않은 데카르트 제품이 생성되는 위치)을 훨씬 더 어렵게 식별 할 수 있습니다.

하지만 더 중요한 것은, 아마도, 외부 특정 시나리오에서, 가입 수행 할 때, 이전 구문은 equivilent되지 않으며, 실제로 잘못된 결과 집합을 생성한다는 것입니다.

모든 검색어에 대해 최신 구문으로 전환해야합니다.

0

항상 조인을 사용하여 데이터를 검색했습니다. 두 번째 쿼리는 이전 구문을 사용하지만 백그라운드에서 여전히 가입되어 있습니다.

2

가장 큰 이점은 가독성입니다. 명시 적으로 명명 된 조인 유형이있는 버전은 내가 이해하기가 훨씬 쉽습니다.

8

INNER JOIN 키워드를 사용하여 첫 번째 방법은 다음과 같습니다 표준

  • ANSI SQL 내가 사용하는 두 번째 옵션을 볼 때

따라서

  • 훨씬 깨끗하고 표현, 난 항상 싫증이 나다 - 그것은 WHERE 절을 부풀게하고 테이블이 어떤 필드에 조인되는지 실제로 볼 수는 없습니다.

    WHERE 절 표현식의 긴 목록에서 JOIN 조건 중 하나를 잊어 버리면 갑자기 지저분한 데카르트 제품이 생깁니다 ..... INNER JOIN 키워드로이를 수행 할 수 없습니다 (어떤 필드 (들)에 가입하십시오).

  • +0

    글쎄, 이전 구문을 실제로 읽을 수있는 상황이 있습니다. 그리고 보통 그것은 개인적인 취향의 문제 일뿐입니다. –

    1

    기본적으로 JOIN에 대해 다른 구문을 사용하고 있습니다. 모범 사례의 문제로, 첫 번째 구문 (명시적인 JOIN)을 사용하는 것이 가장 좋습니다. 왜냐하면 쿼리의 의도가 무엇인지 명확하고 코드를 유지 관리하기가 더 쉽기 때문입니다.

    0

    이것은 RDBMS에 따라 다르지만 SQL Server의 경우 이전 구문을 사용하면 최적화가 향상된다는 것을 알고 있습니다. 이는 SQL 질의와 벤더 관련 질문에 대한 것입니다.

    차이점이 있는지 이해하는 데 도움이되는 EXPLAIN (SQL Server : Query Execution Plan) 유형 함수를 사용할 수도 있습니다. 각 쿼리는 고유하며 저장된 통계가 동작을 변경할 수 있다고 상상합니다.