안녕하세요. 오랜만에 인사드립니다.

다름이 아니라 뷰테이블 내에서 아래와 같이 group by를 썼는데 속도가 굉장히 느린 것 같습니다.

결과값은 수만개지만 웹에서 최종 쿼리는 페이징 쿼리를 따로 타서 20페이지씩 짤라서 보여주기는 하는데

이상하게 group by를 넣은 날부터 테스트 하시던 분들이 웹 조회가 굉장히 느려지고 MS-SQL을 사용하는

다른 어플리케이션들이 Timeout이 생긴다고 합니다.

DB쪽은 초짜라서 저렇게 group by를 써도 되는 것인지 모르겠습니다만 우선 결과가 잘 나오니 이렇게 쓰고는 있는데요

이걸 퍼포먼스를 고려하여 효과적으로 쿼리를 다시 짤 수 있을까요?

dbo.Pallet_Mst.PalletNo 항목을 기준으로 중복된 것이 많이 나와서 PalletNo 중복을 걸러서 묶어주려다 보니

저렇게 무식하게 많은 group by를 쓰게 되었습니다.

아니면 아예 처음부터 dbo.Pallet_Mst 테이블의 항목들을 중복 제거하여 조인을 걸어주는 방법을 쓰는 것이 나을런지요?

경험과 지식이 부족하여 이런 질문드리게 되어 죄송스럽게 생각합니다. 조언 주시면 정말 고맙겠습니다.

참고로 설치된 버전은 SQL 2012 입니다. 아래는 SQL Server가 느려지는 문제로 보이는 group by를 사용한

Vw_productPosition 테이블입니다.



이미지 242.png


위의 쿼리입니다.


SELECT  dbo.Pallet_Mst.PalletNo, dbo.Product_Mst.PartNo, dbo.Pallet_Dtl.Qty, dbo.Product_Mst.ErpCode, 

               dbo.Product_Mst.PartNm, dbo.Product_Mst.Standard, dbo.Product_Mst.Unit, dbo.Product_Mst.ProcDiv, 

               dbo.Product_Mst.Data1, dbo.Product_Mst.Data2, dbo.Product_Mst.Data3, dbo.Product_Mst.Data4, 

               dbo.Pallet_Mst.PalletDiv, dbo.Code_Mst.DivCode, dbo.Code_Mst.DivNm, dbo.Code_Mst.CodeNm, 

               dbo.Pallet_Mst.PlantSite, Code_Mst_1.DivCode AS DivCode2, Code_Mst_1.CodeNo AS CodeNo2, 

               Code_Mst_1.DivNm AS DivNm2, Code_Mst_1.CodeNm AS CodeNm2, dbo.Pallet_Mst.PrintDate, 

               dbo.Pallet_Mst.PrintUser, dbo.Pallet_Mst.State, dbo.Pallet_Mst.RegDate, dbo.Pallet_Mst.RegTime, 

               dbo.Pallet_Mst.Note, dbo.Pallet_Mst.Loc, dbo.Pallet_Mst.AssFlag

FROM     dbo.Pallet_Mst LEFT OUTER JOIN

               dbo.Position_Info ON dbo.Pallet_Mst.Loc = dbo.Position_Info.Loc INNER JOIN

               dbo.Pallet_Dtl ON dbo.Pallet_Mst.PalletNo = dbo.Pallet_Dtl.PalletNo INNER JOIN

               dbo.Product_Mst ON dbo.Pallet_Dtl.PartNo = dbo.Product_Mst.PartNo INNER JOIN

               dbo.Code_Mst ON dbo.Pallet_Mst.PalletDiv = dbo.Code_Mst.CodeNo INNER JOIN

               dbo.Code_Mst AS Code_Mst_1 ON dbo.Pallet_Mst.PlantSite = Code_Mst_1.CodeNo

WHERE  (dbo.Code_Mst.DivCode = '01') AND (Code_Mst_1.DivCode = '10') AND (dbo.Pallet_Mst.State = 'W')

GROUP BY dbo.Pallet_Mst.PalletNo, dbo.Product_Mst.PartNo, dbo.Pallet_Dtl.Qty, dbo.Product_Mst.ErpCode, 

               dbo.Product_Mst.PartNm, dbo.Product_Mst.Standard, dbo.Product_Mst.Unit, dbo.Product_Mst.ProcDiv, 

               dbo.Product_Mst.Data1, dbo.Product_Mst.Data2, dbo.Product_Mst.Data3, dbo.Product_Mst.Data4, 

               dbo.Pallet_Mst.PalletDiv, dbo.Code_Mst.DivCode, dbo.Code_Mst.DivNm, dbo.Code_Mst.CodeNm, 

               dbo.Pallet_Mst.PlantSite, Code_Mst_1.DivCode, Code_Mst_1.CodeNo, Code_Mst_1.DivNm, 

               Code_Mst_1.CodeNm, dbo.Pallet_Mst.PrintDate, dbo.Pallet_Mst.PrintUser, dbo.Pallet_Mst.State, 

               dbo.Pallet_Mst.RegDate, dbo.Pallet_Mst.RegTime, dbo.Pallet_Mst.Note, dbo.Pallet_Mst.Loc, dbo.Pallet_Mst.AssFlag



어떻게 다듬어야 퍼포먼스가 나올까요? 고수분들의 도움이 절실합니다.


No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 28665
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 15551
7162 테이블에 없는것 골라내기.. [1] 윤미 2013.09.13 4402
7161 null값이 자주 들어가는 칼럼을 index를 만들어도 되나요? [2] 청개구리대왕 2013.09.13 4846
7160 프로시져 질문. [2] 형님 2013.09.13 3784
7159 쿼리설치시문제좀해결해주세요 [2] dlawms 2013.09.12 4016
7158 시간 계산 관련 질문좀 드릴게요 [1] 왕만두와우동 2013.09.12 4370
7157 저장프로시저(SP)의 매개변수에 대하여 [4] 캡이다 2013.09.12 4971
» 뷰테이블 내의 Group by 퍼포먼스 관련 질문드립니다. [3] 하이페츠 2013.09.12 5241
7155 고수분들 초보적인것좀 도와주세요 [5] 왕만두와우동 2013.09.11 4368
7154 mssql 2000 -> 2008 업그레이드 관련 문의 드립니다. [1] 자비드 2013.09.11 6548
7153 테이블 합치는 방법에 대하여 질문드려요! [3] WhoAmI 2013.09.11 3821
7152 작업 모니터 사용법 [3] 비홍 2013.09.11 4185
7151 sql서버 메모리용량 [2] 비홍 2013.09.11 4357
7150 외래키 관련해서 질문좀 드립니다. [2] 왕만두와우동 2013.09.11 4742
7149 안녕하세요.. 선배님들 질문이 있습니다 ㅠ.ㅜ [3] WhoAmI 2013.09.10 3893
7148 두 월사이에 일수 구하기 질문요 [8] fins 2013.09.10 4629
7147 SSMS 에서 CTRL + ] (꺽쇠괄호) 를 누르면 다운됩니다. [1] 빌리 2013.09.10 5719
7146 성능모니터의 compilations/sec가 높은 쿼리를 알고 싶습니다. [4] 공유맨 2013.09.10 4347
7145 if문의 원자성에 대한 질문입니다 [10] 코코포도 2013.09.10 4206
7144 group by 를 중복해수 할 수 있나요? [7] taz2315 2013.09.10 4012
7143 문자열 결과물 합치기 [2] taz2315 2013.09.10 4991





XE Login