Bom gente seguinte tive que fazer uma busca bem complexa q envolvia mtas tabelas e muitas tabelas com muitos registros. Em ambiente de teste esta funcionando afinal o ambiente de teste o banco de dados é bem mais leve que o ambiente real.
quando vou executar no ambiente real a busca trava, acho q o servidor corta e entra em looping. então queria ajuda de vocês para tentar achar um solução que deixa a busca mais rapida. Por exemplo já ouvi falar de um recurso MySQL o LIMIT que você limita o numero de requisicoes deixando a busca mais rapida e evitando q ela trave, porem no meu caso a minha busca eu jogo ela em um array para mostrar ao usuario os dados encontrados e trabalhar com eles, portanto a opção de LIMIT não seria viavel pois não mostraria todos os dados
alguém pode me dar alguma ideia de como melhorar a velocidade da minha busca e evitar que ela trave?
Segue o codigo dela:
if ($_POST["id_cliente_uf"]) {
$sql = "SELECT CU.uf, CU.id_cliente_uf, CU.nome AS nome_uf, CC.nome AS nome_cidade, CC.id_cliente_uf, CC.id_cliente_cidade, SUM(PE.vl_total) AS vl_total,
PE.id_cliente_endereco, PE.id_pedido_status, CE.cidade, SUM(PE.id_pedido_status) AS qtde_pedido
FROM nome_tabela CU
INNER JOIN nome_tabela CC ON CC.id_cliente_uf = CU.id_cliente_uf
INNER JOIN nome_tabela CE ON CE.id_cliente_cidade = CC.id_cliente_cidade
INNER JOIN nome_tabela PE ON PE.id_cliente_endereco = CE.id_cliente_endereco
INNER JOIN nome_tabela C ON PE.id_cliente = C.id_cliente
WHERE CU.id_cliente_uf = {$_POST["id_cliente_uf"]}
AND PE.id_pedido_status = 'x'
GROUP BY CC.id_cliente_cidade ";
Bom nesse codigo eu mostro as cidades que já fizeram pedido na loja apos o usuario por $_POST ter esolhido o estado. Depois faço o ARRAY para mostrar os dados que eu quero
$req = mysql_query($sql) or die(mysql_error());
while ($cp = mysql_fetch_array($req)) {
Bom agora caso o usuario não selecione o estado a tela de entrada é uma relacao que mostrar todos os estados com a quantidade de pedidos por cada um....Traduzindo na primeira busca mostra todos os pedidos que foram feitos em todas as cidades daquele estado escolhido, CIDADE e PEDIDO
Já a proxima busca que vou colocar é a tela de entrada onde mostrar todos os estados com todos os pedidos ESTADO e PEDIDO....o codigo é:
else if(!$_POST["id_cliente_uf"]) {
$sql2 = "SELECT CU.uf, CU.id_cliente_uf, CC.id_cliente_uf, CC.id_cliente_cidade, SUM(PE.vl_total) AS vl_total,PE.id_cliente_endereco, PE.id_pedido_status, SUM(PE.id_pedido_status) AS qtde_pedido
FROM nome_tabela CU
INNER JOIN nome_tabela CC ON CC.id_cliente_uf = CU.id_cliente_uf
INNER JOIN nome_tabela CE ON CE.id_cliente_cidade = CC.id_cliente_cidade
INNER JOIN nome_tabela PE ON PE.id_cliente_endereco = CE.id_cliente_endereco
INNER JOIN nome_tabela C ON PE.id_cliente = C.id_cliente
WHERE PE.id_pedido_status = 3
GROUP BY CU.uf ";
E em baixo eu faço um ARRAY para mostrar os dados
$req2 = mysql_query($sql2) or die(mysql_error());
while ($cp2 = mysql_fetch_array($req2)) {
Lembrando esta funcionando o q eu quero, mas no ambiente real esta busca por ser muito complexa trava então gostaria de saber se existe algum recurso q posso deixar ela mais rapida, sei la algum tipo de REFRESH a cada tantas consultas
Pergunta
marcosfj1
Bom gente seguinte tive que fazer uma busca bem complexa q envolvia mtas tabelas e muitas tabelas com muitos registros. Em ambiente de teste esta funcionando afinal o ambiente de teste o banco de dados é bem mais leve que o ambiente real.
quando vou executar no ambiente real a busca trava, acho q o servidor corta e entra em looping. então queria ajuda de vocês para tentar achar um solução que deixa a busca mais rapida. Por exemplo já ouvi falar de um recurso MySQL o LIMIT que você limita o numero de requisicoes deixando a busca mais rapida e evitando q ela trave, porem no meu caso a minha busca eu jogo ela em um array para mostrar ao usuario os dados encontrados e trabalhar com eles, portanto a opção de LIMIT não seria viavel pois não mostraria todos os dados
alguém pode me dar alguma ideia de como melhorar a velocidade da minha busca e evitar que ela trave?
Segue o codigo dela:
Bom nesse codigo eu mostro as cidades que já fizeram pedido na loja apos o usuario por $_POST ter esolhido o estado. Depois faço o ARRAY para mostrar os dados que eu quero Bom agora caso o usuario não selecione o estado a tela de entrada é uma relacao que mostrar todos os estados com a quantidade de pedidos por cada um....Traduzindo na primeira busca mostra todos os pedidos que foram feitos em todas as cidades daquele estado escolhido, CIDADE e PEDIDO Já a proxima busca que vou colocar é a tela de entrada onde mostrar todos os estados com todos os pedidos ESTADO e PEDIDO....o codigo é: E em baixo eu faço um ARRAY para mostrar os dadosLembrando esta funcionando o q eu quero, mas no ambiente real esta busca por ser muito complexa trava então gostaria de saber se existe algum recurso q posso deixar ela mais rapida, sei la algum tipo de REFRESH a cada tantas consultas
alguém sabe me orientar?
Valeu
Link para o comentário
Compartilhar em outros sites
10 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.