큰 테이블에서 다중 조인 쿼리 최적화

user2552985

기존 애플리케이션에 대한 추가 기능을 작성하고 있으며 다양한 거래 유형에 대한 수량 합계를 가져와야합니다. 각 트랜잭션 유형에는 ta_code, ta_type 및 ta_asc 기준의 고유 한 세트가 있습니다.

아래 쿼리는 필요한 정보를 반환하지만 결국 trans 테이블에는 약 5 백만 개의 레코드가 있으므로 실행하는 데 4 분이 걸립니다.

SELECT t.qty AS tQty, sQty, rQty, mQty, lQty, aQty, xQty, t.itmcode
FROM trans AS t
LEFT JOIN 
    (
        SELECT sum(qty) as sQty, itmcode
        FROM trans
        WHERE 
            site = 127 
            AND ta_code = '12'
        GROUP BY itmcode
    )as tblS ON tblS.itmcode = t.itmcode
LEFT JOIN 
    (
        SELECT sum(qty) as rQty, itmcode
        FROM trans
        WHERE 
            site = 127 
            AND ta_code = '12' AND ta_type = '1'
        GROUP BY itmcode
    )as tblR ON tblR.itmcode = t.itmcode
LEFT JOIN 
    (
        SELECT sum(qty) as mQty, itmcode
        FROM trans
        WHERE 
            site = 127 
            AND ta_code = '15' AND ta_type = '4'
        GROUP BY itmcode
    )as tblM ON tblM.itmcode = t.itmcode
LEFT JOIN 
    (
        SELECT sum(qty) as lQty, itmcode
        FROM trans
        WHERE 
            site = 127 
            AND ta_asc = '147'
        GROUP BY itmcode
    )as tblL ON tblL.itmcode = t.itmcode
LEFT JOIN 
    (
        SELECT sum(qty) as aQty, itmcode
        FROM trans
        WHERE 
            site = 127 
            AND ta_asc = '155'
        GROUP BY itmcode
    )as tblA ON tblA.itmcode = t.itmcode
LEFT JOIN 
    (
        SELECT sum(qty) as xQty, itmcode
        FROM trans
        WHERE 
            site = 127 
            AND ta_asc = '155' AND ta_code = '15' AND ta_type = '4'
        GROUP BY itmcode
    )as tblX ON tblX.itmcode = t.itmcode                
INNER JOIN item AS i ON i.code = t.itmcode       
WHERE t.site = 127
GROUP BY itmcode

각 조인은 비 효율성을 증가시키는 것처럼 보이지만 개별적으로 실행하더라도 각 조인 선택은 실행하는 데 10 초 이상 걸립니다. 이 데이터베이스에 대한 읽기 권한 만 있으므로 어떤 식 으로든 변경할 수 없습니다.

이를보다 효율적으로 달성 할 수있는 방법이나 구조에 대해 조언 해 주시면 감사하겠습니다.

알렉스 바 이니

시도해 볼 가치가 있습니다. 모든 "left join"절을 제거하고 다음과 같이 조건부 합계를 계산합니다.

    SELECT 
    ISNULL(SUM(CASE WHEN ta_code = '12' and ta_type='1' THEN Qty ELSE 0 END), 0) as rQty,
    ISNULL(SUM(CASE WHEN ta_code = '15' and ta_type='4' THEN Qty ELSE 0 END), 0) as mQty

    FROM trans AS t

    WHERE t.Site = 127
    GROUP BY itmcode

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

큰 테이블에서 왼쪽 조인 쿼리를 최적화하는 방법

분류에서Dev

쿼리 최적화 (다중 조인)

분류에서Dev

MS SQL에서 다양한 다른 테이블과 조인하는 선택 쿼리 성능 최적화

분류에서Dev

쿼리 최적화-SQL에서 효율적으로 일대 다 관계 테이블의 결과 조합

분류에서Dev

테이블 디자인 최적화 또는 쿼리 최적화

분류에서Dev

빅 테이블 조인으로 쿼리 최적화

분류에서Dev

SQL 다중 테이블 조인 쿼리

분류에서Dev

데이터베이스의 큰 테이블에 대한 쿼리 최적화 (SQL)

분류에서Dev

이 mysql 쿼리를 최적화하는 방법이 있습니까 (업데이트, 다중 조인)?

분류에서Dev

SQL Server 쿼리 최적화 : 자체 내부 조인이 너무 많습니다.

분류에서Dev

동일한 테이블 쿼리에서 일대 다 관계 최적화

분류에서Dev

Left 조인을 사용하여 여러 테이블에서 SQL 쿼리 최적화

분류에서Dev

테이블과 그룹화 모두에서 다중 합계 쿼리로 2 테이블을 조인하는 방법

분류에서Dev

이 MYSQL 쿼리를 최적화하는 방법-여러 테이블 조인

분류에서Dev

이 쿼리를 향후 더 큰 DB에 맞게 확장 / 최적화해야합니다 (전체 테이블 읽기 제거).

분류에서Dev

POSTGRES의 쿼리 최적화 프로그램의 통계 추정기는 다중 테이블 조인의 중간 제품에 대한 가장 일반적인 값 목록을 계산합니까?

분류에서Dev

SQL 쿼리 최적화, 인수가 다른 다중 선택

분류에서Dev

메모리 최적화 테이블에서 인덱스 사용

분류에서Dev

SELECT 쿼리를위한 테이블 구조의 Brighthouse 최적화

분류에서Dev

Django에서 큰 쿼리 셋 / 컨텍스트 최적화

분류에서Dev

큰 데이터 세트에 MySQL의 쿼리의 최적화

분류에서Dev

다른 테이블에서 2 개의 SQL 쿼리 조인

분류에서Dev

다른 테이블을 조인하는 동적 LINQ Where 쿼리

분류에서Dev

Azure 테이블 저장소에서보다 큰 쿼리 행 키

분류에서Dev

Oracle에서 테이블의 최소값 (값)보다 큰 값으로 결과를 쿼리하는 방법

분류에서Dev

MySQL 테이블 인덱스 / 쿼리 최적화

분류에서Dev

MySQL에서 다중 열 인덱스 테이블 쿼리

분류에서Dev

최적화 쿼리에 너무 많은 내부 조인 및 행이 포함되어 있습니다.

분류에서Dev

sqlite의 내부 조인에 대한 쿼리 최적화

Related 관련 기사

  1. 1

    큰 테이블에서 왼쪽 조인 쿼리를 최적화하는 방법

  2. 2

    쿼리 최적화 (다중 조인)

  3. 3

    MS SQL에서 다양한 다른 테이블과 조인하는 선택 쿼리 성능 최적화

  4. 4

    쿼리 최적화-SQL에서 효율적으로 일대 다 관계 테이블의 결과 조합

  5. 5

    테이블 디자인 최적화 또는 쿼리 최적화

  6. 6

    빅 테이블 조인으로 쿼리 최적화

  7. 7

    SQL 다중 테이블 조인 쿼리

  8. 8

    데이터베이스의 큰 테이블에 대한 쿼리 최적화 (SQL)

  9. 9

    이 mysql 쿼리를 최적화하는 방법이 있습니까 (업데이트, 다중 조인)?

  10. 10

    SQL Server 쿼리 최적화 : 자체 내부 조인이 너무 많습니다.

  11. 11

    동일한 테이블 쿼리에서 일대 다 관계 최적화

  12. 12

    Left 조인을 사용하여 여러 테이블에서 SQL 쿼리 최적화

  13. 13

    테이블과 그룹화 모두에서 다중 합계 쿼리로 2 테이블을 조인하는 방법

  14. 14

    이 MYSQL 쿼리를 최적화하는 방법-여러 테이블 조인

  15. 15

    이 쿼리를 향후 더 큰 DB에 맞게 확장 / 최적화해야합니다 (전체 테이블 읽기 제거).

  16. 16

    POSTGRES의 쿼리 최적화 프로그램의 통계 추정기는 다중 테이블 조인의 중간 제품에 대한 가장 일반적인 값 목록을 계산합니까?

  17. 17

    SQL 쿼리 최적화, 인수가 다른 다중 선택

  18. 18

    메모리 최적화 테이블에서 인덱스 사용

  19. 19

    SELECT 쿼리를위한 테이블 구조의 Brighthouse 최적화

  20. 20

    Django에서 큰 쿼리 셋 / 컨텍스트 최적화

  21. 21

    큰 데이터 세트에 MySQL의 쿼리의 최적화

  22. 22

    다른 테이블에서 2 개의 SQL 쿼리 조인

  23. 23

    다른 테이블을 조인하는 동적 LINQ Where 쿼리

  24. 24

    Azure 테이블 저장소에서보다 큰 쿼리 행 키

  25. 25

    Oracle에서 테이블의 최소값 (값)보다 큰 값으로 결과를 쿼리하는 방법

  26. 26

    MySQL 테이블 인덱스 / 쿼리 최적화

  27. 27

    MySQL에서 다중 열 인덱스 테이블 쿼리

  28. 28

    최적화 쿼리에 너무 많은 내부 조인 및 행이 포함되어 있습니다.

  29. 29

    sqlite의 내부 조인에 대한 쿼리 최적화

뜨겁다태그

보관