query문 성능관련 0 3 1,407

by 잔든건 [DB 기타] mssql SQLSERVER with임시테이블 [2018.03.27 15:54:55]


안녕하세요

MSSQL 사용자입니다.  (SQL Server 2005)

with 임시테이블을 활용하여

select구문을 작성하였고 DB tool에서는 0초가 나옵니다.

하지만 ibatis에 적용해서 was를 구동해보면 멈출정도로 느려지는데요.

속도가 느려지는것이 지속되는것이 아니고 느려졌다 정상속도였다를 반복합니다.

 

작성한 쿼리의 특징이라곤 

with 임시테이블, 각 실테이블에 with(nolock) 설정이 되어있습니다.

관련이 있을까요?

by 마농 [2018.03.28 11:24:02]

뭔가 차이가 있을 것입니다.
프로그램 에서는 바인드 변수 조건 사용하는데
쿼리 툴에서 테스트할 때는 상수값 조건주고서 테스트 했다던가 하는 차이?


by 잔든건 [2018.03.28 17:50:38]

select절에  sum(ISNULL(A,0)) 이부분을 sum(A,0)로 변경하니깐 속도가 쿼리툴이랑 동일해졌습니다.

이런식의 사용은 안되는건가요? ㅜㅜ..


by 마농 [2018.03.28 18:02:00]

글쎄요 질문을 대충 하지 마시고, 정확하게 해주셔야 합니다.
sum(A,0) 이라는 구문은 없구요.
sum(ISNULL(A,0)) 은 비효율이 존재하는 구문입니다.
 - ISNULL 구문이 데이터 건수만큼 수행이 되며
 - 널이 아닌것만 sum 하면 되는 것을 null 까지 0으로 바꾸어 sum 하는 비효율
ISNULL(sum(A),0) 이렇게 바꾸시면 효율적으로 바뀝니다.
단. 이 정도의 비효율이 성능에 지대한 영향을 끼칠 정도의 비효율은 아닐 것 같은데요?
체감할 정도의 비효율은 아닐 것입니다.
다른 이유가 있을 것 같네요.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입