Sql em 3 tabelas muito lento
Estou com uma lentidão muito grande ao juntar 3 tabelas. O estranho é quando faço sql com duas tabelas é rapido.
Tabela a 679 registros
Tabela b 22531 registros
Tabela c 1988 registros
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
Curtidas 0
Respostas
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
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
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
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