Ir para conteúdo

Arquivado

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

Bruno Conte

Mysql lento com Order by

Recommended Posts

Quais índices esta tabela tem ?!

 

Padrão e Customizadas ?

 

Já pensou em buscar por data , >= alguma data ?!

 

Reduziria o universo do Order by

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso ela veio as padrões e customizadas, não sei se é a instalação do meu banco mysql, mais ate pelo banco de dados as consultas quando fujo do padrão e começo a colocar condições fica lentas.

 

por exemplo colcoando apenas um dia:

 

 

 

SELECT a.C5_EMISSAO, a.C5_NUM, a.C5_NOMECLI, b.C6_NUM, b.C6_DESCRI, b.C6_QTDVEN, b.C6_QTDENT, b.C6_PRCVEN
FROM sc5010 AS a
INNER JOIN sc6010 AS b ON a.C5_NUM = b.C6_NUM
WHERE b.C6_QTDVEN > B.C6_QTDENT AND a.C5_EMISSAO = '20130827'
LIMIT 0,200

 

em uma consulta que retornou poucos resultados demorou isso o:

 

 

Mostrando registos 0 - 22 ( 23 total, O Query demorou 222.7188 sec)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente com a filial, todos os indices tem a filial.

 

Tem indice por filial,data ?!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem um índice no padrão (SC50102)

 

C5_FILIAL,C5_EMISSAO

 

eles não te ajudam ?

Compartilhar este post


Link para o post
Compartilhar em outros sites


SELECT *

FROM CT5010

WHERE C5_FILIAL = '01'

AND C5_EMISSAO = '20130923'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os relacionamentos também tem de ser otimizados por chave.

Compartilhar este post


Link para o post
Compartilhar em outros sites


SELECT a.C5_EMISSAO, a.C5_NUM, a.C5_NOMECLI, b.C6_NUM, b.C6_DESCRI, b.C6_QTDVEN, b.C6_QTDENT, b.C6_PRCVEN

from SC5010 a

inner join SC6010 B on a.C5_FILIAL = B.C6_FILIAL and a.C5_NUM = B.C6_NUM

where a.C5_FILIAL = '01'

and a.C5_EMISSAO >= '20130923'

AND b.C6_QTDVEN > B.C6_QTDENT

Compartilhar este post


Link para o post
Compartilhar em outros sites

motta, melhou 100% velocidade.

agora fui fazer uma query com filtro e ele nao esta puxando.

 

o que estou fazendo de errado:

 

 

 

SELECT a.C5_EMISSAO, a.C5_NUM, a.C5_NOMECLI, b.C6_NUM, b.C6_DESCRI, b.C6_QTDVEN, b.C6_QTDENT, b.C6_PRCVEN
from SC5010 a inner join SC6010 b on a.C5_FILIAL = b.C6_FILIAL and a.C5_NUM = b.C6_NUM
where a.C5_NOMECLI = 'PRIMUS ENGENHARIA E CONSTRUCOES LTDA' AND a.C5_EMISSAO BETWEEN '20130826' AND '20130827' AND a.C5_FILIAL = '01'
AND b.C6_QTDVEN > b.C6_QTDENT
ORDER BY a.C5_NUM DESC

 

e entre esta data existe cadastro para o primus

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente com like

 


where  a.C5_NOMECLI like 'PRIMUS ENGENHARIA E CONSTRUCOES LTDA%'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Simples, uma das condições do where não foi atendida.

 

teste tirando uma a uma.

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.