Ir para conteúdo
Fórum Script Brasil
  • 0

Lentidão na Consulta


Bonamim.jb

Pergunta

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 para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...