Bom dia!
Me desculpe se não estou no tópico correto.
Em uma biblioteca eu e um colega criamos o código abaixo, que roda em uma grid(consulta), são dois select e um INSERT como pode ver. Na tabela tb_oficina chega ter mais de 500 mil registros. Quando eu executo colocando um período desejado chega demora até 30 minutos e as vezes não chega a concluir.
O que analisamos é que se trata do segundo select toda essa demora.
Gostaria da ajude de vocês para melhorar o código abaixo. Ficarei muito grato.
------------------------------------------------- /// -----------------------------
<?php function gerar_selos($codigoempresa,$dt_inicial,$dt_final) { //Limpar tabela $del = "DELETE FROM tb_anexos_o WHERE codigoempresa = '".$codigoempresa."'"; sc_exec_sql ($del); $sql= "SELECT tb_pedidos.data_saida, tb_oficina.id_pedido, tb_oficina.resultado_b, tb_pedidos.nf, tb_pedidos.nr_controle, MIN(tb_oficina.n_selo) AS selo_inicial, MAX(tb_oficina.n_selo) AS selo_final FROM tb_oficina, tb_pedidos WHERE tb_oficina.id_pedido = tb_pedidos.id_pedido AND data_saida IS NOT NULL AND n_selo <> '' AND resultado_b = '1' AND tb_pedidos.ex_ped <> '*' AND (data_saida BETWEEN '".$dt_inicial."' AND '".$dt_final."') AND tb_pedidos.codigoempresa = '".$codigoempresa."' GROUP BY tb_oficina.id_pedido ORDER BY id_oficina DESC"; $res = mysql_query($sql) or die ("Erro linha 38".mysql_error()."
".$sql); while ($l = mysql_fetch_array($res) ) { $data_saida = $l['data_saida']; $id_pedido = $l['id_pedido']; $nf = $l['nf']; $nr_controle = $l['nr_controle']; $bc = 0; $abc = 0; $co2 = 0; $ap = 0; $em = 0; $sql_tipo = "SELECT id_tipo_ext, COUNT(id_tipo_ext) AS qt FROM tb_oficina, tb_pedidos WHERE tb_oficina.id_pedido = tb_pedidos.id_pedido AND n_selo <> '' AND data_saida = '".$data_saida."' AND tb_pedidos.codigoempresa = '".$codigoempresa."' AND tb_pedidos.id_pedido = '".$id_pedido."' GROUP BY id_tipo_ext ORDER BY id_oficina DESC"; $res_tipo = mysql_query($sql_tipo) or die (mysql_error()); while ($lp = mysql_fetch_array($res_tipo)) { $tipo = $lp['id_tipo_ext']; $qt = $lp['qt']; if ($tipo == '1') $bc = $qt; if ($tipo == '2') $co2 = $qt; if ($tipo == '3') $em = $qt; if ($tipo == '6') $ap = $qt; if ($tipo == '8') $abc = $qt; if ($tipo == '9') $bc = $qt; }// fim while lp $total_selos = ($bc + $abc + $co2 + $ap + $em); //====================================================================== //Ajustar ainda $selo_inicial = $l['selo_inicial']; $selo_final = $l['selo_final']; //====================================================================== $incluir = "INSERT INTO tb_anexos_o (codigoempresa, data_saida, id_pedido, nf, nr_controle, bc, abc, co2, ap, em, total_selos, selo_inicial, selo_final) VALUES ('".$codigoempresa."', '".$data_saida."', '".$id_pedido."', '".$nf."', '".$nr_controle."', '".$bc."', '".$abc."', '".$co2."', '".$ap."', '".$em."', '".$total_selos."', '".$selo_inicial."', '".$selo_final."')"; mysql_query($incluir) or die (mysql_error()); }// fim while l } ?>obg
Gilmar Monteiro
v7