2010-06-16 3 views
1

이 질문은 이전 질문에서 영감을 얻었습니다. "WHERE 절의 순서가 다른 점이 있습니까?" WHERE 섹션에서 사용 된 열이 SELECT 문의 시작 부분에 배치되면 SELECT 문의 성능이 향상됩니까?SELECT 문의 열 순서에 차이가 있습니까?

예 : SELECT 사용하는 것이 아니라 내가 SELECT 문에서만 필요한 것들에 열 목록을 제한하는 성능을 크게 향상시킬 수 있음을 알 수 있습니까

SELECT customer.id, 
      transaction.id, 
      transaction.efective_date, 
      transaction.a, 
      [...] 
     FROM customer, transaction 
    WHERE customer.id = transaction.id; 

* 현재 목록이 작기 때문에.

+1

SELECT 절 *의 순서가 * 모든 * 데이터베이스의 쿼리 성능에서 전혀 차이가 나지 않는 상황을 상상할 수 없습니다. –

답변

7

Oracle 및 Informix 및 기타 자체 DBMS의 경우 열의 순서는 성능에 영향을 미치지 않아야합니다. 비슷하게 질의 엔진은 Where 절을 처리하기위한 최적의 순서를 찾지 만 모든 순서가 동일해야 함 (즉, 실행 순서를 강제 할 수있는 과거 구문을 찾음)이 중요하지 않아야합니다.

+0

어쨌든 필자는 WHERE 섹션의 열과 동일한 순서로 배치하는 습관을 가지고 있습니다. 왜냐하면 필요한 경우 문을 쉽게 시각화하고 업데이트 할 수 있기 때문입니다. 또한 최적화 된 행이 전체 행 세트가있는 현재 목록과 비교하여 더 작은 현재 목록을 작성한다고 생각하면서 필요한 열만 넣습니다. –

+1

@ 프랭크 : 스스로 부과 된 분야에는 전혀 해가 없지만 쿼리 성능을 변경하지는 않습니다. –

+1

규칙 기반 옵티마이 저는 where 절의 순서 만 사용했지만 CBO는 사용하지 않았습니다. (http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1857060700346051220 참조) –

관련 문제