복붙노트

[SQL] 최고의 성능을 ANDS에 Where 절의 주문

SQL

최고의 성능을 ANDS에 Where 절의 주문

나의 생각은 내가 그 전에 행의 큰 번호에서 내 AND를 해당 필터를 넣을 경우 해당 선택 세트 사이 그리고 문 훨씬 작기 때문에 필터 밖으로 몇 가지, 내 쿼리가 더 빨리 실행해야한다는 것입니다.

하지만 실제로 많이 또는이 엔진이 이미 최적화되어있는 SQL의 성능에 영향을의와 SQL 문의 WHERE 절에 순서합니까?

해결법

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

    1.정말 옵티마이에 따라 달라집니다.

    정말 옵티마이에 따라 달라집니다.

    이 옵티마이의 직업에 관계없이 당신이 그것을 설명하는 방법의 쿼리를 실행하는 최적의 방법으로 파악하기 때문에 그것은 문제가 안된다.

    당신이 재 주문 조항하여 특정 쿼리에 변화를 않습니다 찾을 수 있도록 실제로, 더 최적화가 완벽하지 않습니다. 확실히 알 수있는 유일한 방법은 자신의 스키마, 데이터 등으로 스스로를 테스트하는 것입니다

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

    2.대부분의 SQL 엔진은 당신을 위해이 일을하도록 최적화되어 있습니다. 에서하지만, 내가 찾은 상황에 큰 차이를 만들 수 있습니다 먼저 큰 테이블을 개척하려고는 - 그것은 다치게하지 않습니다!

    대부분의 SQL 엔진은 당신을 위해이 일을하도록 최적화되어 있습니다. 에서하지만, 내가 찾은 상황에 큰 차이를 만들 수 있습니다 먼저 큰 테이블을 개척하려고는 - 그것은 다치게하지 않습니다!

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

    3.많은 인덱스가 설정하는 방법을 따라 달라집니다. 인덱스는 두 개의 키를 결합하는 존재하는 경우, 최적화 알고리즘은 단일 인덱스 검색과 쿼리에 응답 할 수 있어야한다. 독립적 인 인덱스가 두 키 존재 그렇지 않은 경우, 옵티마이 저는 각 키를 만족하는 레코드 목록을 얻고 목록을 병합 할 수 있습니다. 인덱스는 하나 개의 조건을 위해 존재하지만 다른하지 않는 경우, 옵티마이 저는 먼저 인덱스 목록을 사용하여 필터링한다. 그 시나리오의에서는 조건이 나열되는 순서 중요하지한다.

    많은 인덱스가 설정하는 방법을 따라 달라집니다. 인덱스는 두 개의 키를 결합하는 존재하는 경우, 최적화 알고리즘은 단일 인덱스 검색과 쿼리에 응답 할 수 있어야한다. 독립적 인 인덱스가 두 키 존재 그렇지 않은 경우, 옵티마이 저는 각 키를 만족하는 레코드 목록을 얻고 목록을 병합 할 수 있습니다. 인덱스는 하나 개의 조건을 위해 존재하지만 다른하지 않는 경우, 옵티마이 저는 먼저 인덱스 목록을 사용하여 필터링한다. 그 시나리오의에서는 조건이 나열되는 순서 중요하지한다.

    조건 중 어느 것도 적용되지 않으면 조건이 지정된 순서는 평가 순서에 영향을 미칠 수 있지만, 데이터베이스가 쿼리를 만족시키기 위해 모든 단일 레코드를 가져해야 할 것 때문에, 시간을 보냈다 페치는 평가 소요되는 시간을 난쟁이 전망이다 정황.

  4. from https://stackoverflow.com/questions/3805863/order-of-ands-in-where-clause-for-greatest-performance by cc-by-sa and MIT license