Consulta SQL lenta com varias tabelas
Decidi colocar algumas tabelas para dividir o cadastro de Itens em Cores, Embalagens, Marcas, Modelos... so que esses campos nao sao obrigatorios pois os clientes ja tem os seus itens cadastrados. o codigo SQL esta abaixo, gostaria de saber oq posso fazer pra deixar a consulta um pouco mais rapida... obrigado.
Select I.ALIQUOTA, I.APLICACAO, I.ATIVO, I.CADASTRO, I.CLASSIF, I.COD_BARRA, I.COD_FABRICANTE, I.CODIGO, I.COR, I.DESCRICAO, I.EMBALAGEM, I.FORNECEDOR, I.FOTO, I.GRUPO, I.IPI, I.MARCA, I.MODELO, I.PRODUTO,
I.REFERENCIA, I.SUB_GRUPO, F.NOME NOM_FORNECEDOR, I.UNIDADE, I.VOLUME, IP.PRE_ATACADO, IP.PRE_COMPRA, IP.PRE_MEDIO, IP.PRE_PRAZO, IP.PRE_SUGER, IP.PRE_VAREJO, IP.PRE_VENDA, IE.ESTOQUE, IE.LOCALIZACAO, IE.SITUACAO, I.SERVICO, G.DESCRICAO NOM_GRUPO, SG.DESCRICAO NOM_SUB_GRUPO, I.CMS_VISTA, I.CMS_PRAZO, I.DESCR_CUPOM, P.DESCRICAO AS NOM_PRODUTO, I.PESO, MD.DESCRICAO AS NOM_MODELO, M.DESCRICAO AS NOM_MARCA, C.DESCRICAO AS NOM_COR, E.DESCRICAO AS NOM_EMBALAGEM, I.EMBAL, I.ALIQUOTA2, A.DESCRICAO AS NOM_ALIQUOTA, A2.DESCRICAO AS NOM_ALIQUOTA2, IE.EST_MIN
From Itens I Inner Join Itens_Precos IP on (I.Codigo = IP.Item and IP.Loja = :Loja)
Inner Join Itens_Estoque IE on (I.Codigo = IE.Item and IE.Loja = :Loja)
Left Join Fornecedores F on (I.Fornecedor = F.Codigo)
Left Join Grupos G on (I.Grupo = G.Codigo)
Left Join Sub_Grupos SG on (I.Sub_Grupo = SG.Codigo)
Left Join Marcas M on (I.Marca = M.Codigo)
Left Join Modelos MD on (I.Modelo = MD.Codigo)
Left Join Produtos P on (I.Produto = P.Codigo)
Left Join Cores C on (I.Cor = C.Codigo)
Left Join Embalagens E on (I.Embalagem = E.Codigo)
Left Join Aliquotas A on (I.Aliquota = A.Codigo)
Left Join Aliquotas A2 on (I.Aliquota2 = A2.Codigo)
Select I.ALIQUOTA, I.APLICACAO, I.ATIVO, I.CADASTRO, I.CLASSIF, I.COD_BARRA, I.COD_FABRICANTE, I.CODIGO, I.COR, I.DESCRICAO, I.EMBALAGEM, I.FORNECEDOR, I.FOTO, I.GRUPO, I.IPI, I.MARCA, I.MODELO, I.PRODUTO,
I.REFERENCIA, I.SUB_GRUPO, F.NOME NOM_FORNECEDOR, I.UNIDADE, I.VOLUME, IP.PRE_ATACADO, IP.PRE_COMPRA, IP.PRE_MEDIO, IP.PRE_PRAZO, IP.PRE_SUGER, IP.PRE_VAREJO, IP.PRE_VENDA, IE.ESTOQUE, IE.LOCALIZACAO, IE.SITUACAO, I.SERVICO, G.DESCRICAO NOM_GRUPO, SG.DESCRICAO NOM_SUB_GRUPO, I.CMS_VISTA, I.CMS_PRAZO, I.DESCR_CUPOM, P.DESCRICAO AS NOM_PRODUTO, I.PESO, MD.DESCRICAO AS NOM_MODELO, M.DESCRICAO AS NOM_MARCA, C.DESCRICAO AS NOM_COR, E.DESCRICAO AS NOM_EMBALAGEM, I.EMBAL, I.ALIQUOTA2, A.DESCRICAO AS NOM_ALIQUOTA, A2.DESCRICAO AS NOM_ALIQUOTA2, IE.EST_MIN
From Itens I Inner Join Itens_Precos IP on (I.Codigo = IP.Item and IP.Loja = :Loja)
Inner Join Itens_Estoque IE on (I.Codigo = IE.Item and IE.Loja = :Loja)
Left Join Fornecedores F on (I.Fornecedor = F.Codigo)
Left Join Grupos G on (I.Grupo = G.Codigo)
Left Join Sub_Grupos SG on (I.Sub_Grupo = SG.Codigo)
Left Join Marcas M on (I.Marca = M.Codigo)
Left Join Modelos MD on (I.Modelo = MD.Codigo)
Left Join Produtos P on (I.Produto = P.Codigo)
Left Join Cores C on (I.Cor = C.Codigo)
Left Join Embalagens E on (I.Embalagem = E.Codigo)
Left Join Aliquotas A on (I.Aliquota = A.Codigo)
Left Join Aliquotas A2 on (I.Aliquota2 = A2.Codigo)
Dorivansousa
Curtidas 0
Respostas
Dorivansousa
23/10/2006
Esqueci de dizer, Uso Firebird 1.5 e Delphi6
GOSTEI 0