[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.테이블이 인덱스되는 경우 성능이 일반적으로 유사하다.
테이블이 인덱스되는 경우 성능이 일반적으로 유사하다.
당신이 당신의 결과를 주문하는 경우 최고 보통 의미가 있습니다 :하지만 가치는 고려 (어떤 그렇지 않으면 상단?)
결과를 주문하는 것은 더 많은 처리가 필요합니다.
최소는 항상 순서를 필요로하지 않습니다. (그냥은 따라 다르지만, 자주 등으로하여 주문 또는 그룹이 필요하지 않습니다)
당신의 두 가지 예에서, 나는 속도 / X-계획이 매우 유사한 것으로 기대. 당신은 항상 확인 통계로 설정할 수 있습니다,하지만 난 그 차이가 중요 할 것이라고 의심한다.
-
==============================
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.그들은 서로 다른 쿼리입니다.
그들은 서로 다른 쿼리입니다.
첫 번째 반환 많은 레코드 (각 EVENT_ID의 가장 큰 a_date는 a_primary_key = 5에서 발견)
두번째 복귀 한 레코드 (최소 a_date는 a_primary_key = 5 내에 있음).
-
==============================
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.나는 20,00,000+ 레코드 하나 개의 테이블에 최대 및 최고 수행 그리고 최고 속도 제공 최대 또는 최소 기능 이상에 의한 주문이 발생할 것을 발견했다.
나는 20,00,000+ 레코드 하나 개의 테이블에 최대 및 최고 수행 그리고 최고 속도 제공 최대 또는 최소 기능 이상에 의한 주문이 발생할 것을 발견했다.
그래서 가장 좋은 방법은 얼마 동안 하나 둘 쿼리를 실행하고 연결보다 시간이 경과 확인하는 것입니다.
-
==============================
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 잡아 것이다.
from https://stackoverflow.com/questions/7198274/max-vs-top-1-which-is-better by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 1 년 동안 매달 기록을 카운트 (0) | 2020.06.07 |
---|---|
[SQL] 많은 곳에서 GETDATE ()를 사용하는 경우, 더 나은 변수를 사용하는 것입니다? (0) | 2020.06.07 |
[SQL] 오라클 SQL은 어떻게 날짜에서 시간을 제거하는 (0) | 2020.06.07 |
[SQL] 어떻게 MySQL의 LIKE 절에서 사용자 변수를 사용하는 방법? (0) | 2020.06.07 |
[SQL] 왜 VARCHAR 필요 길이 사양을합니까? (0) | 2020.06.07 |