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