Jump to content
Fórum Script Brasil
  • 0

Lentidão na Consulta


Bonamim.jb

Question

Boa Tarde Pessoal,

Sou iniciante ainda em SQL e estou tendo problemas de lentidão na consulta deste script que montei:

DECLARE @TIMEZONE  				VARCHAR(50),
	    @BIAS                  	INT,
	    @FROMDATE    			DATETIME,
	    @TODATE               	DATETIME                         
 
SET @FROMDATE = NULL
SET @TODATE = NULL
               
IF @FROMDATE IS NULL OR @TODATE IS NULL
BEGIN
                SET @FROMDATE = CONVERT(DATETIME,CONVERT(VARCHAR,DATEADD(DAY,-7,GETDATE()),112),120)
                SET @TODATE = DATEADD(SECOND,-1,DATEADD(DAY,7,@FROMDATE))
END
 
SELECT DISTINCT DATEADD(MINUTE, TZ1.BIAS, ACT.STARTTIME),
			    DATEADD(MINUTE, TZ2.BIAS, ACT.ENDTIME),
			    ACT.EMPLOYEEID,
			    ACT.ACTIVITYID,
			    DATEDIFF(SECOND, ACT.STARTTIME, ACT.ENDTIME) QTD_SEGUNDOS
		   FROM AAAAAAAAAAAAAAAAAAA ACT (NOLOCK)
		  INNER JOIN BBBBBBBBBBBBBBBBBBBBBBBB WO1 (NOLOCK) ON ACT.EMPLOYEEID = WO1.WORKRESOURCEID
														  AND ACT.STARTTIME BETWEEN WO1.STARTTIME AND ISNULL(WO1.ENDTIME, CAST('99991231' AS DATETIME))
		  INNER JOIN BBBBBBBBBBBBBBBBBBBBBBBB WO2 (NOLOCK) ON ACT.EMPLOYEEID = WO2.WORKRESOURCEID
														  AND ACT.ENDTIME BETWEEN WO2.STARTTIME AND ISNULL(WO2.ENDTIME, CAST('99991231' AS DATETIME))
		  INNER JOIN CCCCCCCCCCCC O1 (NOLOCK) ON WO1.ORGANIZATIONID = O1.ID
		  INNER JOIN CCCCCCCCCCCC O2 (NOLOCK) ON WO2.ORGANIZATIONID = O2.ID
		  INNER JOIN DDDDDDDDDD TZ1 (NOLOCK) ON O1.TIMEZONE = TZ1.TIMEZONE
										    AND NOT((TZ1.ENDTIME <= ACT.STARTTIME)
												 OR (TZ1.STARTTIME > ACT.STARTTIME))
		  INNER JOIN DDDDDDDDDD TZ2 (NOLOCK) ON O2.TIMEZONE = TZ2.TIMEZONE
										    AND NOT((TZ2.ENDTIME <= ACT.ENDTIME)
											     OR (TZ2.STARTTIME > ACT.ENDTIME))
		  WHERE DATEADD(MINUTE, TZ1.BIAS, ACT.STARTTIME) BETWEEN @FROMDATE AND @TODATE
		    AND ACT.ACTIVITYID <> -4001

O resultado deste script é exatamente o que preciso (ajustar o fuso-horário de cada dia/atividade/funcionário, baseado no timzezone da organização de cada funcionário), porém esta demorando mais de 20 horas para processar.

Detalhes:

Tabela: AAAAAAAAAAAAAAAAAAA

Tem mais de 10.000.000 de registros, separado por dia/hora inicio e dia/hora fim, por funcionário e atividade. (Esses registros são apenas de 7 dias).

Tabela: BBBBBBBBBBBBBBBBBBBBBBBB

Tem mais de 4.000.000 de registros, separado por dia/hora inicio e dia/hora fim, por funcionário organização. (Esses registros são apenas de 7 dias).

Tabela: CCCCCCCCCCCC

Tem mais de 32.000 de registros, separado por dia/hora inicio e dia/hora fim, e organização. (Esses registros são apenas de 7 dias).

Tabela: DDDDDDDDDD

Tem mais de 80.000 de registros, separado por dia/hora inicio e dia/hora fim, e timezone. (Esses registros são apenas de 7 dias).

Já criei chaves primárias nos campos de cruzamento e não ajudou.

Poderiam me auxiliar?

Muito Obrigado!!!!

Link to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      651.8k
×
×
  • Create New...