2012-12-06 5 views
29

가능한 중복 :
MySQL ON vs USING?- MYSQL

쿼리 1 :

SELECT * 
FROM users 
JOIN orders ON (orders.user_id = users.user_id) 
WHERE users.user_id = 1; 

질의 2 :

SELECT * 
FROM users 
JOIN orders USING (user_id) 
WHERE user_id = 1; 

주문 및 사용자 테이블에 가입하여 특정 데이터를 가져오고 싶습니다. 그것은 잘 작동합니다. 내 문제는 두 쿼리가 동일한 결과 집합을 출력하므로 모두 동일합니까? 어느 것이 더 효율적으로 사용됩니까? 어느 것이 성능에 좋은가요? 어느 것이 가장 좋은 방법입니까?

+2

[예] (http://dev.mysql.com/doc/refman/5.0/en/join.html) 벤치마킹을 했습니까? 벤치마킹 했습니까? 코딩 표준은 무엇입니까? – Ben

+2

아니 었 [이미 논의] (http://stackoverflow.com/questions/11366006/mysql-on-vs-using) 한 번? – Geo

답변

29

USING 절은 여러 테이블에서 데이터를 검색 할 때 JOIN 조건에서 언급 할 필요가없는 항목입니다. USING 절을 사용하면 해당 특정 열 이름이 두 테이블에 모두 나타나야하며 SELECT 쿼리는 USING 절에 지정된 열 이름을 사용하여 해당 테이블을 자동으로 조인합니다.

테이블에 두 개의 공통 열 이름이있는 경우 USING 절의 원하는 공통 열 이름을 언급하십시오.

USING 또한 동적 SQL을 실행하는 동안 사용됩니다.

예를 들어,

EXECUTE IMMEDIATE 'DELETE FROM dept WHERE deptno = :num' 
    USING dept_id; 
  • USING

    : 이것은 당신이 이름으로 조인 키를 지정할 수 있습니다.

  • ON 절 :이 구문을 사용하면 두 테이블의 조인 키에 대한 열 이름을 지정할 수 있습니다.

여러 열이 같은 이름을 공유하지만 이러한 일반적인 모든 열을 사용하여 참여하지 않으려면 USING 절은 사용

USING 절. USING 절에 나열된 열은 WHERE 절을 포함하여 명령문에 한정자를 사용할 수 없습니다.

ON 절은 열 이름이 두 테이블에서 일치하지 않는 테이블을 조인하는 데 사용됩니다

ON 절. 조인 조건은 WHERE 절의 필터 조건에서 제거됩니다.