Ir para conteúdo

POWERED BY:

Arquivado

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

Benedito Juvenal

Otimizar consulta muito lenta

Recommended Posts

Galera, como posso otimizar esta consulta que está devagar (quase parando)? Trata-se de um fórum, e nesta instrução estou buscando a última postagem de cada seção do fórum:

 

SELECT `x`.`cod_forum_id`, `x`.`cod_topico_id`, `l`.`nome`
FROM (
SELECT `t`.`cod_forum_id`, `t`.`cod_topico_id`, `t`.`dth_data`, `t`.`cod_user_id`, `t`.`cod_user_nivel` FROM `tb_forum_topicos` `t`
UNION ALL
SELECT `r`.`cod_forum_id`, `r`.`cod_topico_id`, `r`.`dth_data`, `r`.`cod_user_id`, `r`.`cod_user_nivel` FROM `tb_forum_topicos_respostas` `r`
) `x`
LEFT OUTER JOIN `login` `l`
ON `l`.`id` = `x`.`cod_user_id` AND `l`.`nivel` = `x`.`cod_user_nivel`
GROUP BY `x`.`cod_forum_id` ASC

 

Esta consulta está demorando bastante, quase 5 segundos, haja vista que tenho pouquíssimos dados nas tabelas, com exceção de `login` que é uma visão unindo 3 tabelas de usuários. Esta visão demora em torno de 0.8650 segundos para carregar.

 

Já a consulta acima leva 4.2864 segundos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se os campos estão devidamente indexados no banco.

Procure user LIMIT, afinal, você só precisa do último né...

Pense na possibilidade de guardar o ID do último post no registro de cada seçã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.