Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

hyperpixel

Lentidao na consulta

Recommended Posts

oi pessoal tem alguma ferramenta etc pra mim verificar o que esta acontecendo com o resultado de uma consulta, pois no sis aqui da empresa umas das consultas em mysql php esta bem mais lenta que o restante, queria saber como avaliar esta questão pra encontrar o resultado, pois o pessoal esta reclamando que esta ruim p trabalhar deste jeito.

O problema que ja analizei o cod de consulta e aparentemente esta certo (não estou trazendo nada a mais do que preciso etc)

Se eu postar o cod e o diagrama das tabelas ajuda?

 

valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

conforme pediu ve se ajuda mas sei q tem algo errado por que faco outras consultas (usooutras tabelas e nao demora tanto quanto esta)deve ser a modelagem ou logica

valeu

 

table |type |possible_keys|key |key_len|ref | rows | Extra

sistem_clientes|ALL |NULL |NULL |NULL |NULL |1545 |Using temporary; Using filesort

tab_acesso |eq_ref|PRIMARY |PRIMARY|4 |sistem_clientes.idCliente| 1 |

tab_tel |ALL |NULL |NULL |NULL |NULL 2324 where used | |

emailativacao |ALL |NULL |NULL |NULL |NULL 14 where used | |

 

EXPLAIN SELECT tab_acesso.data_cadastro, tab_acesso.id_cliente, tab_acesso.login, tab_acesso.oq, tab_acesso.ativo, sistem_clientes.idCliente, sistem_clientes.nome, sistem_clientes.nomeFantasia, sistem_clientes.cargo, sistem_clientes.cnpj, sistem_clientes.ramoAtividade, sistem_clientes.inscricaoEstadual, sistem_clientes.qualRepresentante, sistem_clientes.emailAtivacao, emailativacao.cliente, emailativacao.data, emailativacao.historico, emailativacao.situacao, emailativacao.situacao2, tab_tel.id_cliente, tab_tel.telefone
FROM tab_acesso
INNER JOIN sistem_clientes ON sistem_clientes.idCliente = tab_acesso.id_cliente
INNER JOIN tab_tel ON tab_tel.id_cliente = tab_acesso.id_cliente
LEFT JOIN emailativacao ON emailativacao.cliente = tab_acesso.id_cliente
WHERE tab_acesso.ativo = '1'
OR emailativacao.status = '1'
GROUP BY tab_acesso.id_cliente
ORDER BY tab_acesso.login ASC 
LIMIT 0 , 250

Compartilhar este post


Link para o post
Compartilhar em outros sites

primeira coisa colocar um indice em tab_acesso.login e fazer o mesmo para cada ponto de junçao (INNER JOIN) e trocar todos os INNER JOIN por where.

 

 

Alem disso o q tah te quebrando as pernas eh a tab_tel e a sistem_clientes

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se der pra explicar um pouco melhor :blink:

quanto ao indice na tab_acesso.login ja tem um indice seria o tab_acesso.id_cliente

agora o porque do tab_acesso.login é pra apresentar o resultado em ordem alfabetica.

Quanto ao tab_tel posso conversar com o pessoal e omitir esta informacao depois o pessoal acessa o registro pra pegar o tel se o beneficio for maior que o custo vale a pena

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.