Sql em 3 tabelas muito lento

11/06/2019

13

SQL

Estou com uma lentidão muito grande ao juntar 3 tabelas. O estranho é quando faço sql com duas tabelas é rapido.
SELECT a.Ordem, a.Artigo, a.dtInicial, a.dtFinal, a.Turno, b.SubSetor

FROM tblCorteOrdem AS a LEFT JOIN tblCorteModeloComponentes As b ON a.Artigo = b.Artigo

WHERE a.Ordem NOT IN ( SELECT c.Ordem FROM tblCorteOrdemSubSetor AS c GROUP BY c.Ordem)

GROUP BY a.Ordem, a.Artigo, a.dtInicial, a.dtFinal, a.Turno, b.SubSetor

ORDER BY a.Ordem

Tabela a 679 registros
Tabela b 22531 registros
Tabela c 1988 registros
Responder

Posts

12/06/2019

Thiago Moreno

teste assim, mudei a parte do not in

SELECT a.Ordem, a.Artigo, a.dtInicial, a.dtFinal, a.Turno, b.SubSetor
 
FROM tblCorteOrdem AS a LEFT JOIN tblCorteModeloComponentes As b ON a.Artigo = b.Artigo
 
WHERE NOT exists (
 select * from 
 (SELECT distinct Ordem FROM tblCorteOrdemSubSetor) c where c.ordem=a.ordem )
 
 
 GROUP BY a.Ordem, a.Artigo, a.dtInicial, a.dtFinal, a.Turno, b.SubSetor
 
ORDER BY a.Ordem

Responder
tente assim:
SELECT
	a.Ordem, a.Artigo, a.dtInicial, a.dtFinal, a.Turno, b.SubSetor
FROM
	tblCorteOrdem AS a
LEFT JOIN
	tblCorteModeloComponentes AS b ON b.Artigo = a.Artigo
LEFT JOIN
	tblCorteOrdemSubSetor AS c ON c.Ordem = a.Ordem
WHERE
	c.Ordem is null
GROUP BY
	a.Ordem, a.Artigo, a.dtInicial, a.dtFinal, a.Turno, b.SubSetor
ORDER BY
	a.Ordem

Responder

12/06/2019

Alyson Martins

teste assim, mudei a parte do not in

SELECT a.Ordem, a.Artigo, a.dtInicial, a.dtFinal, a.Turno, b.SubSetor
 
FROM tblCorteOrdem AS a LEFT JOIN tblCorteModeloComponentes As b ON a.Artigo = b.Artigo
 
WHERE NOT exists (
 select * from 
 (SELECT distinct Ordem FROM tblCorteOrdemSubSetor) c where c.ordem=a.ordem )
 
 
 GROUP BY a.Ordem, a.Artigo, a.dtInicial, a.dtFinal, a.Turno, b.SubSetor
 
ORDER BY a.Ordem



Demorou ainda Thiago.
Responder

12/06/2019

Alyson Martins

tente assim:
SELECT
	a.Ordem, a.Artigo, a.dtInicial, a.dtFinal, a.Turno, b.SubSetor
FROM
	tblCorteOrdem AS a
LEFT JOIN
	tblCorteModeloComponentes AS b ON b.Artigo = a.Artigo
LEFT JOIN
	tblCorteOrdemSubSetor AS c ON c.Ordem = a.Ordem
WHERE
	c.Ordem is null
GROUP BY
	a.Ordem, a.Artigo, a.dtInicial, a.dtFinal, a.Turno, b.SubSetor
ORDER BY
	a.Ordem


Deu certo Emerson só fiz a seguinte mudança.

SELECT a.Ordem, a.Artigo, a.dtInicial, a.dtFinal, a.Turno, b.SubSetor

FROM (tblCorteOrdem AS a

LEFT JOIN tblCorteModeloComponentes AS b ON a.Artigo = b.Artigo )

LEFT JOIN tblCorteOrdemSubSetor AS c ON c.Ordem = a.Ordem

WHERE IsNull(c.Ordem)

GROUP BY a.Ordem, a.Artigo, a.dtInicial, a.dtFinal, a.Turno, b.SubSetor

ORDER BY a.Ordem
Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira