문제

합산 된 열에 대한 색인을 만드는 것이 색인이없는 것보다 빠릅니까?

도움이 되었습니까?

해결책

죄송합니다. 당신이 무엇을 요구하는지 명확하지 않습니다.

당신은 요청하고 있습니까, 그것은 다음과 같은 쿼리 속도를 높일 것입니다

SELECT product, sum(quantity) FROM receipts 
GROUP BY product

수량에 대한 색인을 추가 한 경우?

그것이 질문이라면, 대답은 아니오입니다. 일반적으로, 인덱스는 많은 사람들 사이에서 몇 줄 만 찾아야 할 때 도움이됩니다. 여기에는 모든 행이 필요하므로 색인이 도움이되지 않습니다.

모호한 예외가 있습니다 (대부분의 DB 최적화기는 아마도이 트릭을 구현하는 것을 방해하지 않을 것입니다). 쿼리가 발생하는 경우

SELECT sum(foo) FROM bar

, FOO에 인덱스가 있고 막대가 많은 열이있는 테이블이있는 곳에서 전체 색인에서 읽을 수 있으며, 기본 테이블을 읽고 인덱스에서 직접 답을 얻는 것보다 작은 히트를 발생시킬 수 있습니다. "실제"테이블을 전혀 만지지 않아도됩니다! 그러나 이것은 상당히 드문 경우이며, 당신은 당신의 Optimizer가 이것을 너무 많이 사용하기 전에 이것을한다는 것을 테스트하고 싶을 것입니다.

다른 팁

아니요. 색인은 필요한 수표 수를 제한하여 검색을 향상시킵니다. 집계 함수 (count, max, min, sum, avg)는 열의 모든 항목을 열의 모든 항목을 실행해야합니다.

요약을 더 빨리 만들려면 결과를 미리 재료화 할 수 있습니다. Oracle에서 사용하십시오 구체화 된 견해, MS SQL 사용 인덱스 뷰.

특정 질문에서 "합산되는 열에 대한 색인을 생성하고 있습니다. 인덱스가없는 것보다 빠릅니까?"

귀하의 질문에 대한 답은 Spencer의 답변에 있습니다.

"집계 함수 (count, max, min, sum, avg)는 합계의 모든 항목을 합산해야합니다."

스펜서의 대답에서 열의 맥락을 명확히했습니다. 그럼에도 불구하고 그의 대답은 맞습니다.

인덱스가 커버되는 경우 일반적으로 더 빠릅니다. 테이블의 열 수와 인덱스 수의 차이 사이의 차이에 의해 얼마나 빠른 금액이 결정됩니다. 또한 필터링 기준이 있으면 더 빠를 수 있습니다.

이 쿼리를 사용할 때 WHERE (ProductID Here)에 열을 색인화하는 것을 발견했습니다.

productId = 1 그룹 by upduredif gupleds에서 productId, sum (수량)을 선택하십시오.

인덱스를 추가하면 쿼리 중 하나가 45 초에서 거의 즉각적으로 진행되었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top