Sql em 3 tabelas muito lento

SQL

11/06/2019

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
Alyson Martins

Alyson Martins

Curtidas 0

Respostas

Thiago Moreno

Thiago Moreno

11/06/2019

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

GOSTEI 0
Emerson Nascimento

Emerson Nascimento

11/06/2019

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

GOSTEI 0
Alyson Martins

Alyson Martins

11/06/2019

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.
GOSTEI 0
Alyson Martins

Alyson Martins

11/06/2019

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
GOSTEI 0
POSTAR