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.
Pergunta
Bonamim.jb
Boa Tarde Pessoal,
Sou iniciante ainda em SQL e estou tendo problemas de lentidão na consulta deste script que montei:
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
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.