2009-04-27 2 views
1

A와 B를 데이터베이스 스키마의 두 테이블이라고합시다. A와 B는 다 대일 관계로 관련됩니다. 각 A에 대해 많은 B가 있고 B에는 외래 키 열 a_id가 있습니다. 두 테이블 모두 기본 키 열 id를가집니다.큰 테이블에서 더 나은 성능을 보이는 접근 방법은?

A와 B의 대용량 데이터 세트에 대해 다음 두 쿼리 중 어떤 것이 더 잘 수행됩니까?

SELECT A.* FROM A,B WHERE A.id = B.a_id 

또는

SELECT A.* FROM A INNER JOIN B ON A.id = B.a_id 

또는 그들은 동일?

답변

5

그들은 모든 4 주요 데이터베이스 시스템에 동일합니다 Oracle, SQL Server, MySQL, PostgreSQL.

당신이 MySQL에 필요한 조인 순서를 시행하는 데 도움이 될 것입니다 (대신 JOINSTRAIGHT_JOIN 사용하여, 더 정확하게는) JOIN 구문을 사용.

이 또한 일반적으로 JOIN 구문을 사용하는 것이 더 깨끗하고 읽을 간주 :

은 자세한 내용은이 대답을 참조하십시오.

비록 내가 Oracle 코드 예제에서 일반적으로 WHERE 구문을 사용하고 있습니다.

0

제 생각에 그들은 둘 다 같습니다. 이론적으로 A, B의 기본 동작은 데카르트 조인이므로 내부 조인을 엔진에서 최적화 할 수 있다고 가정합니다. 즉, 나는 괜찮은 크기 테이블을 지금 다루고 있으며 SQL Server 2005에서 두 쿼리 모두 동일한 쿼리 시간을 사용했기 때문에 엔진이이를 채택 할만큼 똑똑하다는 것입니다.

건배,
에릭

0

등가입니다. 그러나 두 번째 형식이 기본 구문입니다.

1

성능상의 두 가지 문이 주요 시스템에서 동일하다는 다른 답변에 동의하지만 두 번째 문은 코드 가독성 측면에서 바람직합니다. 또한 별표를 사용하는 대신 열 목록을 지정하면 성능과 가독성이 향상됩니다.

관련 문제