복붙노트

[SQL] 더 - 탑 1 대 MAX?

SQL

더 - 탑 1 대 MAX?

나는 몇 가지 코드를 검토했고, 누군가가했던 무언가를 가로 질러 와서 내 방식이 더 나은 이유 생각할 수 없다 그것은 아마도 / 더 효율적 / 안전이다, 그래서 아닌가요?

SELECT MAX(a_date) FROM a_table WHERE a_primary_key = 5 GROUP BY event_id

또는

SELECT TOP 1 a_date FROM a_table WHERE a_primary_key = 5 ORDER BY a_date

나는 두번째 옵션으로 갈 것이다, 그러나 나는 확실 왜 안 해요, 그리고 맞아합니다.

해결법

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

    1.테이블이 인덱스되는 경우 성능이 일반적으로 유사하다.

    테이블이 인덱스되는 경우 성능이 일반적으로 유사하다.

    당신이 당신의 결과를 주문하는 경우 최고 보통 의미가 있습니다 :하지만 가치는 고려 (어떤 그렇지 않으면 상단?)

    결과를 주문하는 것은 더 많은 처리가 필요합니다.

    최소는 항상 순서를 필요로하지 않습니다. (그냥은 따라 다르지만, 자주 등으로하여 주문 또는 그룹이 필요하지 않습니다)

    당신의 두 가지 예에서, 나는 속도 / X-계획이 매우 유사한 것으로 기대. 당신은 항상 확인 통계로 설정할 수 있습니다,하지만 난 그 차이가 중요 할 것이라고 의심한다.

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

    2.테이블 및 컬럼에 클러스터 된 인덱스 조회 할이 경우 1)에있어서, MAX () 연산자 쿼리 SELECT TOP 1 모두 거의 동일한 성능을 가질 것이다.

    테이블 및 컬럼에 클러스터 된 인덱스 조회 할이 경우 1)에있어서, MAX () 연산자 쿼리 SELECT TOP 1 모두 거의 동일한 성능을 가질 것이다.

    2) 테이블과 열에 클러스터형 인덱스 조회 할이없는 경우, MAX () 연산자를 제공 더 나은 성능을 제공합니다.

    참조 : http://www.johnsansom.com/performance-comparison-of-select-top-1-verses-max/

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

    3.그들은 서로 다른 쿼리입니다.

    그들은 서로 다른 쿼리입니다.

    첫 번째 반환 많은 레코드 (각 EVENT_ID의 가장 큰 a_date는 a_primary_key = 5에서 발견)

    두번째 복귀 한 레코드 (최소 a_date는 a_primary_key = 5 내에 있음).

  4. ==============================

    4.쿼리는 동일한 결과를하기 위해서는 다음이 필요합니다 :

    쿼리는 동일한 결과를하기 위해서는 다음이 필요합니다 :

    SELECT MAX(a_date) FROM a_table WHERE a_primary_key = 5
    
    SELECT TOP 1 a_date FROM a_table WHERE a_primary_key = 5 ORDER BY a_date DESC
    

    빠르게 알 수있는 가장 좋은 방법은 쿼리 계획을 확인하고 벤치 마크를하는 것입니다. 다른 통해 하나 개의 쿼리를 선호하는 최적화 될 수있다 테이블 / 힙 크기 등과 같은 데이터베이스의 경우에도 다른 버전과 속도에 영향을 미치는 많은 요인이있다.

  5. ==============================

    5.나는 20,00,000+ 레코드 하나 개의 테이블에 최대 및 최고 수행 그리고 최고 속도 제공 최대 또는 최소 기능 이상에 의한 주문이 발생할 것을 발견했다.

    나는 20,00,000+ 레코드 하나 개의 테이블에 최대 및 최고 수행 그리고 최고 속도 제공 최대 또는 최소 기능 이상에 의한 주문이 발생할 것을 발견했다.

    그래서 가장 좋은 방법은 얼마 동안 하나 둘 쿼리를 실행하고 연결보다 시간이 경과 확인하는 것입니다.

  6. ==============================

    6.MAX와 TOP 다르게 작동합니다. 최대 값을 반환합니다 첫 번째 쿼리는 각각 다른 EVENT_ID의 FOUND에 대한 a_primary_key = 5를 가지고 a_date에 대한 발견했다. 제 질의는 단순히 결과 집합에서 발견 a_primary_key = 5 제 a_date 잡아 것이다.

    MAX와 TOP 다르게 작동합니다. 최대 값을 반환합니다 첫 번째 쿼리는 각각 다른 EVENT_ID의 FOUND에 대한 a_primary_key = 5를 가지고 a_date에 대한 발견했다. 제 질의는 단순히 결과 집합에서 발견 a_primary_key = 5 제 a_date 잡아 것이다.

  7. from https://stackoverflow.com/questions/7198274/max-vs-top-1-which-is-better by cc-by-sa and MIT license