Hi My query is running more than 15 sec help me here to get result in less than 3 sec, below my stored procedure is their Thanks in Advance
ALTER proc [GET_EXTRA_HOURS_WORKED]
@SITE_ID INT,
@DEPT_NAME VARCHAR(100),
@TO_DATE DATETIME
AS
BEGIN
declare @d1 int,@d2 int,@d3 int,@d4 int,@d5 int,@m1 int,@m2 int,@m3 int,@m4 int,@m5 int,@y1 int,@y2 int,@y3 int,@y4 int,@y5 int
set @d1=(select SUBSTRING(CONVERT(VARCHAR(8), DATEadd(DD,-4,@TO_DATE), 5),0,3))
set @m1=(select SUBSTRING(CONVERT(VARCHAR(8),DATEadd(DD,-4,@TO_DATE), 5),4,2))
set @y1=(select SUBSTRING(CONVERT(VARCHAR(8), DATEadd(DD,-4,@TO_DATE), 5),7,2))
set @d2=(select SUBSTRING(CONVERT(VARCHAR(8), DATEadd(DD,-3,@TO_DATE), 5),0,3))
set @m2=(select SUBSTRING(CONVERT(VARCHAR(8),DATEadd(DD,-3,@TO_DATE), 5),4,2))
set @y2=(select SUBSTRING(CONVERT(VARCHAR(8), DATEadd(DD,-3,@TO_DATE), 5),7,2))
set @d3=(select SUBSTRING(CONVERT(VARCHAR(8), DATEadd(DD,-2,@TO_DATE), 5),0,3))
set @m3=(select SUBSTRING(CONVERT(VARCHAR(8),DATEadd(DD,-2,@TO_DATE), 5),4,2))
set @y3=(select SUBSTRING(CONVERT(VARCHAR(8), DATEadd(DD,-2,@TO_DATE), 5),7,2))
set @d4=(select SUBSTRING(CONVERT(VARCHAR(8), DATEadd(DD,-1,@TO_DATE), 5),0,3))
set @m4=(select SUBSTRING(CONVERT(VARCHAR(8),DATEadd(DD,-1,@TO_DATE), 5),4,2))
set @y4=(select SUBSTRING(CONVERT(VARCHAR(8), DATEadd(DD,-1,@TO_DATE), 5),7,2))
set @d5=(select SUBSTRING(CONVERT(VARCHAR(8), @TO_DATE, 5),0,3))
set @m5=(select SUBSTRING(CONVERT(VARCHAR(8), @TO_DATE, 5),4,2))
set @y5=(select SUBSTRING(CONVERT(VARCHAR(8), @TO_DATE, 5),7,2))
select distinct emp.EMP_CODE,emp.EMP_NAME,
isnull((select et1.GENERAL_SHIFT from EMP_FPONM_EMP_TIME_SHEET et1 where et1.DAY=@d1 and et1.MONTH=@m1 and et1.YEAR=@y1 and et1.EMP_ID=emp.EMP_CODE and et1.site_id=@SITE_ID),0) as G,
isnull((select et1.FIRST_SHIFT from EMP_FPONM_EMP_TIME_SHEET et1 where et1.DAY=@d1 and et1.MONTH=@m1 and et1.YEAR=@y1 and et1.EMP_ID=emp.EMP_CODE and et1.site_id=@SITE_ID),0) as F,
isnull((select et1.SECOND_SHIFT from EMP_FPONM_EMP_TIME_SHEET et1 where et1.DAY=@d1 and et1.MONTH=@m1 and et1.YEAR=@y1 and et1.EMP_ID=emp.EMP_CODE and et1.site_id=@SITE_ID),0) as S,
isnull((select et1.THIRD_SHIFT from EMP_FPONM_EMP_TIME_SHEET et1 where et1.DAY=@d1 and et1.MONTH=@m1 and et1.YEAR=@y1 and et1.EMP_ID=emp.EMP_CODE and et1.site_id=@SITE_ID),0) as T,
isnull( (select et1.GENERAL_SHIFT from EMP_FPONM_EMP_TIME_SHEET et1 where et1.DAY=@d2 and et1.MONTH=@m2 and et1.YEAR=@y2 and et1.EMP_ID=emp.EMP_CODE and et1.site_id=@SITE_ID),0) as G1,
isnull((select et1.FIRST_SHIFT from EMP_FPONM_EMP_TIME_SHEET et1 where et1.DAY=@d2 and et1.MONTH=@m2 and et1.YEAR=@y2 and et1.EMP_ID=emp.EMP_CODE and et1.site_id=@SITE_ID),0) as F1,
isnull((select et1.SECOND_SHIFT from EMP_FPONM_EMP_TIME_SHEET et1 where et1.DAY=@d2 and et1.MONTH=@m2 and et1.YEAR=@y2 and et1.EMP_ID=emp.EMP_CODE and et1.site_id=@SITE_ID),0) as S1,
isnull((select et1.THIRD_SHIFT from EMP_FPONM_EMP_TIME_SHEET et1 where et1.DAY=@d2 and et1.MONTH=@m2 and et1.YEAR=@y2 and et1.EMP_ID=emp.EMP_CODE and et1.site_id=@SITE_ID),0) as T1,
isnull((select et1.GENERAL_SHIFT from EMP_FPONM_EMP_TIME_SHEET et1 where et1.DAY=@d3 and et1.MONTH=@m3 and et1.YEAR=@y3 and et1.EMP_ID=emp.EMP_CODE and et1.site_id=@SITE_ID),0) as G2,
isnull((select et1.FIRST_SHIFT from EMP_FPONM_EMP_TIME_SHEET et1 where et1.DAY=@d3 and et1.MONTH=@m3 and et1.YEAR=@y3 and et1.EMP_ID=emp.EMP_CODE and et1.site_id=@SITE_ID),0) as F2,
isnull((select et1.SECOND_SHIFT from EMP_FPONM_EMP_TIME_SHEET et1 where et1.DAY=@d3 and et1.MONTH=@m3 and et1.YEAR=@y3 and et1.EMP_ID=emp.EMP_CODE and et1.site_id=@SITE_ID),0) as S2,
isnull((select et1.THIRD_SHIFT from EMP_FPONM_EMP_TIME_SHEET et1 where et1.DAY=@d3 and et1.MONTH=@m3 and et1.YEAR=@y3 and et1.EMP_ID=emp.EMP_CODE and et1.site_id=@SITE_ID),0) as T2,
isnull((select et1.GENERAL_SHIFT from EMP_FPONM_EMP_TIME_SHEET et1 where et1.DAY=@d4 and et1.MONTH=@m4 and et1.YEAR=@y4 and et1.EMP_ID=emp.EMP_CODE and et1.site_id=@SITE_ID),0) as G3,
isnull((select et1.FIRST_SHIFT from EMP_FPONM_EMP_TIME_SHEET et1 where et1.DAY=@d4 and et1.MONTH=@m4 and et1.YEAR=@y4 and et1.EMP_ID=emp.EMP_CODE and et1.site_id=@SITE_ID),0) as F3,
isnull((select et1.SECOND_SHIFT from EMP_FPONM_EMP_TIME_SHEET et1 where et1.DAY=@d4 and et1.MONTH=@m4 and et1.YEAR=@y4 and et1.EMP_ID=emp.EMP_CODE and et1.site_id=@SITE_ID),0) as S3,
isnull((select et1.THIRD_SHIFT from EMP_FPONM_EMP_TIME_SHEET et1 where et1.DAY=@d4 and et1.MONTH=@m4 and et1.YEAR=@y4 and et1.EMP_ID=emp.EMP_CODE and et1.site_id=@SITE_ID),0) as T3,
isnull((select et1.GENERAL_SHIFT from EMP_FPONM_EMP_TIME_SHEET et1 where et1.DAY=@d5 and et1.MONTH=@m5 and et1.YEAR=@y5 and et1.EMP_ID=emp.EMP_CODE and et1.site_id=@SITE_ID),0) as G4,
isnull((select et1.FIRST_SHIFT from EMP_FPONM_EMP_TIME_SHEET et1 where et1.DAY=@d5 and et1.MONTH=@m5 and et1.YEAR=@y5 and et1.EMP_ID=emp.EMP_CODE and et1.site_id=@SITE_ID),0) as F4,
isnull((select et1.SECOND_SHIFT from EMP_FPONM_EMP_TIME_SHEET et1 where et1.DAY=@d5 and et1.MONTH=@m5 and et1.YEAR=@y5 and et1.EMP_ID=emp.EMP_CODE and et1.site_id=@SITE_ID),0) as S4,
isnull((select et1.THIRD_SHIFT from EMP_FPONM_EMP_TIME_SHEET et1 where et1.DAY=@d5 and et1.MONTH=@m5 and et1.YEAR=@y5 and et1.EMP_ID=emp.EMP_CODE and et1.site_id=@SITE_ID),0) as T4
from dbo.EMP_FPONM_EMPLOYEE_INFORMATION emp left join dbo.EMP_FPONM_EMP_TIME_SHEET et on emp.EMP_CODE=et.EMP_ID where emp.SITE_ID=@SITE_ID AND emp.STATUS='Present' AND emp.DEPT_NAME=@DEPT_NAME
END
What I have tried:
My query is running more than 15 sec help me here to get result in less than 3 sec,Thanks in Advance