Consulta sql demorada loop eterno
19/08/2021
0
Bom dia estou fazendo uma consulta sql só que adicionei uma busca mas o loop está muito demorado, podem me ajudar com alguma dica.
Segue a consulta:
select sum(ent.preco_total_item_ent) from itens_nota_ent ent inner join nota_fiscal_ent
nfe on ent.nf_item_ent = nfe.n_nf_ent inner join produtos prod on
(prod.COD_BARRAS_PRODUTO = ent.COD_EAN_ITEM_ENT or prod.COD_BARRAS_CAIXA_PRODUTO = ent.COD_EAN_ITEM_ENT)inner join clientes c
on nfe.CNPJ_CLIENTE_FORN_ENT = c.CNPJ INNER JOIN vendedores_cliente vc
on c.COD_CLIENTE = vc.COD_CLIENTE_VC
where (ent.cfop_item_ent = '5202' or ent.cfop_item_ent = '6202' or ent.cfop_item_ent = '5411'
or ent.cfop_item_ent = '6411') AND nfe.data_emissao_nf_ent >= '01.07.2021'
and nfe.data_emissao_nf_ent <= '19.08.2021' and nfe.baixada_nf_ent = 1
AND nfe.CNPJ_CLIENTE_FORN_ENT = '12267147000474'
group by nfe.n_nf_ent, nfe.data_emissao_nf_ent, nfe.cliente_forn_nf_ent
OBS: Esse (or prod.COD_BARRAS_CAIXA_PRODUTO = ent.COD_EAN_ITEM_ENT) que está gerando a demora, mas preciso dele para a busca ser precisa.
Se souberem outra forma de simplificar a busca e deixar menos lento, comentem por favor.
OBG.
Segue a consulta:
select sum(ent.preco_total_item_ent) from itens_nota_ent ent inner join nota_fiscal_ent
nfe on ent.nf_item_ent = nfe.n_nf_ent inner join produtos prod on
(prod.COD_BARRAS_PRODUTO = ent.COD_EAN_ITEM_ENT or prod.COD_BARRAS_CAIXA_PRODUTO = ent.COD_EAN_ITEM_ENT)inner join clientes c
on nfe.CNPJ_CLIENTE_FORN_ENT = c.CNPJ INNER JOIN vendedores_cliente vc
on c.COD_CLIENTE = vc.COD_CLIENTE_VC
where (ent.cfop_item_ent = '5202' or ent.cfop_item_ent = '6202' or ent.cfop_item_ent = '5411'
or ent.cfop_item_ent = '6411') AND nfe.data_emissao_nf_ent >= '01.07.2021'
and nfe.data_emissao_nf_ent <= '19.08.2021' and nfe.baixada_nf_ent = 1
AND nfe.CNPJ_CLIENTE_FORN_ENT = '12267147000474'
group by nfe.n_nf_ent, nfe.data_emissao_nf_ent, nfe.cliente_forn_nf_ent
OBS: Esse (or prod.COD_BARRAS_CAIXA_PRODUTO = ent.COD_EAN_ITEM_ENT) que está gerando a demora, mas preciso dele para a busca ser precisa.
Se souberem outra forma de simplificar a busca e deixar menos lento, comentem por favor.
OBG.
Vania Claudino
Curtir tópico
+ 0
Responder
Post mais votado
19/08/2021
tente assim:
se você não tem, crie índices:
- clientes: CNPJ
- vendedores_cliente: COD_CLIENTE_VC
- itens_nota_ent: nf_item_ent, cfop_item_ent
- produtos: COD_BARRAS_PRODUTO e COD_BARRAS_CAIXA_PRODUTO
- nota_fiscal_ent: nfe.data_emissao_nf_ent, nfe.baixada_nf_ent, CNPJ_CLIENTE_FORN_ENT
select nfe.n_nf_ent, nfe.data_emissao_nf_ent, nfe.cliente_forn_nf_ent, sum(ent.preco_total_item_ent) preco_total from nota_fiscal_ent nfe inner join clientes c on c.CNPJ = nfe.CNPJ_CLIENTE_FORN_ENT inner join vendedores_cliente vc on vc.COD_CLIENTE_VC = c.COD_CLIENTE inner join itens_nota_ent ent on ent.nf_item_ent = nfe.n_nf_ent and ent.cfop_item_ent in ('5202', '6202', '5411', '6411') inner join produtos prod on (prod.COD_BARRAS_PRODUTO = ent.COD_EAN_ITEM_ENT or prod.COD_BARRAS_CAIXA_PRODUTO = ent.COD_EAN_ITEM_ENT) where nfe.data_emissao_nf_ent between '01.07.2021' and '19.08.2021' and nfe.baixada_nf_ent = 1 and nfe.CNPJ_CLIENTE_FORN_ENT = '12267147000474' group by nfe.n_nf_ent, nfe.data_emissao_nf_ent, nfe.cliente_forn_nf_ent
se você não tem, crie índices:
- clientes: CNPJ
- vendedores_cliente: COD_CLIENTE_VC
- itens_nota_ent: nf_item_ent, cfop_item_ent
- produtos: COD_BARRAS_PRODUTO e COD_BARRAS_CAIXA_PRODUTO
- nota_fiscal_ent: nfe.data_emissao_nf_ent, nfe.baixada_nf_ent, CNPJ_CLIENTE_FORN_ENT
Emerson Nascimento
Responder
Mais Posts
19/08/2021
Josesv
Se souberem outra forma de simplificar a busca e deixar menos lento, comentem por favor.
baixar video do facebook https://onlinevideoconverter.pro/pt/download-video-facebook/
Responder
20/08/2021
Emerson Nascimento
os índices servem para acelerar as pesquisas.
para o Firebird:
https://firebirdsql.org/refdocs/langrefupd20-create-index.html
para o teu caso:
create index clientes_cnpj on clientes(cnpj)
create index vendedores_cliente_cod_cliente on vendedores_cliente(cod_cliente_vc)
create index itens_nota_ent_nf_cfop on itens_nota_ent(nf_item_ent, cfop_item_ent)
create index produtos_codbar_produto on produtos(cod_barras_produto)
create index produtos_codbar_caixa on produtos(cod_barras_caixa_produto)
create index nota_fiscal_ent_emissao on nota_fiscal_ent(data_emissao_nf_ent, baixada_nf_ent, cnpj_cliente_forn_ent)
para o Firebird:
https://firebirdsql.org/refdocs/langrefupd20-create-index.html
para o teu caso:
create index clientes_cnpj on clientes(cnpj)
create index vendedores_cliente_cod_cliente on vendedores_cliente(cod_cliente_vc)
create index itens_nota_ent_nf_cfop on itens_nota_ent(nf_item_ent, cfop_item_ent)
create index produtos_codbar_produto on produtos(cod_barras_produto)
create index produtos_codbar_caixa on produtos(cod_barras_caixa_produto)
create index nota_fiscal_ent_emissao on nota_fiscal_ent(data_emissao_nf_ent, baixada_nf_ent, cnpj_cliente_forn_ent)
Responder
Clique aqui para fazer login e interagir na Comunidade :)