Ir para conteúdo

POWERED BY:

Arquivado

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

Paulo Veneroso

Velocidade no select

Recommended Posts

Pessoal, o meu sistema esta muito lento, principalmente na questão do select do Mysql. O site eh em PHP e Javascript. O que fazer para melhorar o desempenho do meu site? Uma hospedagem iria aumentar bastante o desempenho? Existe outra solução?

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

vamos lá, antes de mais nada ?

 

Qual seu nível de conhecimento de Banco de Dados ?

As tabelas tem índices ?

As queries utilizam estes índices ?

Sabe o tamanho das tabelas (qtd de linhas) ?

As estatisticas estão atualizadas ?

 

Procure material sobre TUNING de BD.

 

http://www.tutorialspoint.com/mysql/mysql-database-tuning.htm

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está testando tudo localmente?

O melhor jeito de saber com 100% de segurança que o problema são seus códigos e não a hospedagem, é testando localmente...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Localmente eh mais lento que a hospedagem ehehehhe.
Meu nível de conhecimento eh baixo. No meu database tem tabela de 500 mil registros e outras de 3 milhoes. As operações de matemáticas entre elas através do select são o processo que mais demora. Não entendi "As estatisticas estão atualizadas ?" Irei pesquisar sobre esse Tunning...

Compartilhar este post


Link para o post
Compartilhar em outros sites

repetindo

 

 

As tabelas tem índices ?

As queries utilizam estes índices ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

As tabelas possuem índices. Acho que algumas queries não utilizam esses índices, irei verificar, nao sabia que era importante.



So este select demora 30 segundos, e olha que são vários:

select (SELECT nrValorCotacao FROM cotacao a WHERE dsCotacao = 'petr3' and a.dtdata <= c.dtdata ORDER by dtData DESC, CodBalanInd LIMIT 1 ) /
((SELECT sum(nrValor) FROM balancoindividual b WHERE codconta = '3.11' and codempresa = 'petr3' and b.dtdata = c.dtdata)/
(SELECT nrTotal FROM capitalsocial d WHERE codempresa = 'petr3') * '1000') as divisao, dtdata
from balancoindividual c where codconta = '3.11' and codempresa = 'petr3' group by dtdata ORDER by dtData DESC, CodBalanInd

Compartilhar este post


Link para o post
Compartilhar em outros sites
SELECT (SELECT NRVALORCOTACAO
        FROM COTACAO A
        WHERE DSCOTACAO = 'petr3'
        AND A.DTDATA <= C.DTDATA
        ORDER BY DTDATA
        DESC, CODBALANIND LIMIT 1 ) /
       ((SELECT SUM(NRVALOR)
         FROM BALANCOINDIVIDUAL B
         WHERE CODCONTA = '3.11'
         AND CODEMPRESA = 'petr3'
         AND B.DTDATA = C.DTDATA) /
       (SELECT NRTOTAL
        FROM CAPITALSOCIAL D
        WHERE codempresa = 'petr3') * '1000')  as divisao, dtdata
FROM BALANCOINDIVIDUAL C
WHERE CODCONTA = '3.11'
AND CODEMPRESA = 'petr3'
GROUP BY DTDATA
ORDER BY DTDATA DESC, CODBALANIND

3 subselects como coluna ?!

Não dava para resolver por join ?

Veja que ,

 

CODCONTA = '3.11'
AND CODEMPRESA = 'petr3'
 , se repete.

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.