Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
select t1.id, (select count(campo) from tabela2 where id = t1.id)
from tabela1 t1
where .......
select t1.id, (select count(t2.campo) from tabela2 t2 inner join tabela1 on tabela1.id = t2.id where t2.id = t1.id)
from tabela1 t1
where .......
select t1.id, count(t2.campo)
from tabela1 t1
left join tabela t2 on t2.id = t1.id
where .......
Estou tentando dessas 3 formas e a única que roda é a segunda...mesmo assim, com muita lentidão...
Existe alguma outra melhor forma de montar essa query?
>
35 minutos atrás, Motta disse:
Estas tabelas tem índices?
As estatisticasestão atualizadas ?
@Motañ possuem índices e as estatísticas estão atualizadas SIM...inclusive essa mesma query eu rodava de boa no MS-SQL. Só que resolvi migrar de banco de dados e to enfrentando essa dificuldade com MySql
O problema pode ser a falta de índices , fez o plano de execução da sql ?
>
17 minutos atrás, Motta disse:
O problema pode ser a falta de índices , fez o plano de execução da sql ?
@Mota ñ fiz o plano de execução!
ñ estou usando SQL. Eu usava SQL e não tinha problema com lentidão. Daí eu migrei para MySql e parece que a consulta fica lenta por causa do where pois percorre a tabela toda (que não é pequena) para contar os registros.
@Mota o problema era mesma a falta de índices...muito obrigado
Estas tabelas tem índices?
As estatisticasestão atualizadas ?