Ir para conteúdo

POWERED BY:

Arquivado

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

KUROL3

Sql Lento 50 segundos

Recommended Posts

Olá apos uma migração feita pela locaweb simplesmente o meu select ficou extremamente lento..

 

segue sql

 

SELECT 
count(*)
FROM
ocorrencias O
INNER JOIN ocorrencias_tipo OT ON (OT.id = O.id_tipo)
INNER JOIN departamentos DP ON DP.id = '7' AND DP.id = IF ((SELECT count(*) FROM ocorrencias_releases ORE WHERE ORE.id_ocorrencia = O.id) = 0, O.id_departamento, (SELECT OCR3.id_departamento FROM ocorrencias_releases OCR3 WHERE OCR3.id_ocorrencia = O.id ORDER BY OCR3.id DESC LIMIT 1))
WHERE
AND O.id_usuario_fechou = 0 

 

aqui o resultado do explain

 

id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	PRIMARY	DP	const	PRIMARY	PRIMARY	4	const	1	Using index
1	PRIMARY	O	ref	id_usuario_fechou,id_tipo	id_usuario_fechou	4	const	1998	Using where
1	PRIMARY	OT	eq_ref	PRIMARY	PRIMARY	4	imobiliariapir.O.id_tipo	1	Using index
1	PRIMARY	C	eq_ref	PRIMARY	PRIMARY	4	imobiliariapir.O.id_cliente	1	Using index
3	DEPENDENT SUBQUERY	OCR3	index	id_ocorrencia,id_oco_dep	PRIMARY	4	NULL	1	Using where
2	DEPENDENT SUBQUERY

 

a tabela ocorrencias tem 30142 registros

a tabela ocorrencias_releases tem 166256 registros

 

se alguem puder ajudar o pq esta tão lento agradeço

obrigado

marco

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta limitar todas as subquerys para quando o banco encontrar um resultado possível ele pare de procurar.

 

Verifica se tem as colunas das tabelas envolvidas estão referenciadas como chave-estrangeira Ex:

 

ADD CONSTRAINT `tabela_ibfk_1` FOREIGN KEY (`coluna`) REFERENCES `tabela` (`coluna`)

 

Verifique também se as tabelas estão como ENGINE=InnoDB, porque para o relacionamento funcionar as tabelas tenque estar com essa ENGINE

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alterei a engine para InnoDB realmente os números mudaram, porem esta demorando muito....

o que você quis dizer com "Tenta limitar todas as subquerys para quando o banco encontrar um resultado possível ele pare de procurar." tem algum exemplo

abraços

marco

 

id 	select_type 	table 	type 	possible_keys 	key 	key_len 	ref 	rows 	Extra
1 	PRIMARY 	DP 	const 	PRIMARY 	PRIMARY 	4 	const 	1 	Using index
1 	PRIMARY 	OT 	index 	PRIMARY 	id_departamento 	4 	NULL 	180 	Using index
1 	PRIMARY 	O 	ref 	id_usuario_fechou,id_tipo 	id_usuario_fechou 	8 	const,imobiliariapir.OT.id 	12 	Using where
3 	DEPENDENT SUBQUERY 	OCR3 	index 	id_ocorrencia,id_oco_dep 	PRIMARY 	4 	NULL 	1 	Using where
2 	DEPENDENT SUBQUERY 	ORE 	ref 	id_ocorrencia,id_oco_dep 	id_ocorrencia 	4 	imobiliariapir.O.id 	2 	Using index

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando roda diretemente no Banco é rápida ?

 

Ocorre o mesmo (lentidão LocalWeb) para outras queries ?

 

Se for isto o problema pode ser de conexão.

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.