JoséQuintas escreveu:Quase resolvido.
Na query original o FROM está errado, está pra produtos e não pro estoque.
Alarme falso.
Na prática ficou até mais lento.
Em termos práticos:
A query pega a movimentação de estoque, relacionada com outras tabelas.
O último preço é obtido por uma function no servidor.
Se eu retirar o último preço ok.
Se eu pegar todos os produtos com o último preço ok.
Se eu juntar as duas..... fica lento.
Pensei que era por pegar o último preço de cada lançamento do estoque, então acrescentei a sub-query que é rápida, pra pegar por produto, mas não resolveu.
Depois vi o FROM que usava como base os produtos, ao invés da movimentação de estoque, alterei e não resolveu.
No MariaDB ou MySQL 5.5 demora 58 segundos.
No MySQL 5.7 é que o problema piorou, o processo é cancelado após 5 minutos.
Não reparei antes porque se trata da listagem completa do estoque, e achei que era normal demorar por ser muita informação.
Por enquanto não fiz novas tentativas.
Vou olhar com atenção os tipos dos campos, mas que eu me lembre são todos iguais.
Existe algum programa que ajude nisso? pra analisar queries ?
EXPLAIN não ajudou em nada.