SQLSERVER 2008에서 쿼리를 실행하고 있습니다. 쿼리를 처리하는 데 4 초가 걸립니다. 너무 오래 걸리는 이유를 이해할 수 없습니다.where 절에 SQL 성능 문제가 있습니다.
SELECT tbl_Operations.Workcenter
,SUM(tbl_Used_Components.Used_Quantity) as CNF_TODAY
FROM tbl_Used_Components
JOIN tbl_Pack_Division on tbl_Pack_Division.Pack_Division_ID =
tbl_Used_Components.Pack_Division_ID
JOIN tbl_Operations on tbl_Operations.Operation_ID = tbl_Pack_Division.Operation_ID
where CONVERT(date, tbl_Pack_Division.Stop_Time) = CONVERT(date, getdate())
AND tbl_Pack_Division.Memo = 'NORMAL'
and tbl_Pack_Division.Status = 'CNF_MACH'
GROUP BY tbl_Operations.Workcenter
문제는 where 절에 있습니다. Where 절없이 쿼리를 실행하면 0.1 초 후에 실행됩니다. 처음 2 개의 인수를 추가하면 여전히 잘 실행됩니다. 그러나 Status-field에 세 번째 인수를 추가하면 잘못됩니다.
어떻게 이것이 문제가 될 수 있습니까? 그것은 seond 하나 (Memo-field)와 같은 세분성에 대한 선택입니다.
편집 :
상태 VARCHAR (10) - 5 개 가지 값
을 가질 수메모 VARCHAR (150)
만 지수 : Pack_Division_ID는
1 : 관련 필드에 대한 테이블 정의를 게시 할 수 있습니까? 2 : 테이블에 색인이 있습니까? –
아마 서버가 두 필드에 대한 북마크 조회보다 스캔이 더 나은 것으로 판단합니다. 실행 계획을 게시하십시오. – GSerg
나는 여러 가지 추측을 할 수 있지만, GSerg는 실행 계획을 게시한다고 말합니다. Explain을 실행하여 쿼리 앞에 접두사를 추가 한 다음 질문에 출력을 추가하십시오. –