Jump to content
ndias

[Resolvido] MySql COUNT com WHERE, o count é lento

Recommended Posts

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?

Share this post


Link to post
Share on other sites
35 minutos atrás, Motta disse:

Estas tabelas tem índices ?

 

As estatisticas estã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

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Camilavip
      Boa noite a todos, estou tendo um probleminha em gravar a senha criptografada, na verdade editar, pois quando gravo vai certo, mas na edição não está dando certo.
      A baixo quando cadastro o cliente é assim, e está indo perfeito.
       
      $nome = $_POST['nome']; $email = $_POST['email']; $login = $_POST['login']; $senha = sha1($_POST['senha']); Mas na hora da edição como está um pouco diferente estou tentando colocar esse sha1 em todo lugar e não está dando
      nome='$_POST[nome]', email='$_POST[email]', login='$_POST[login]', senha='$_POST[senha]', Então no de cima no cadastro está ok, mas na edição não sei mais aonde coloco esse sha1 para dar certo ou é burrice minha mesmo,
    • By Sapinn
      Estou trazendo os dados do banco de dados e eles estão vindo com problema na acentuação
      uso o seguinte codigo no php
      <?php
      include_once ‘…/php/conexao.php’;
      header(‘Content-Type: text/html; charset=utf-8’);
      mysqli_query($conn,“SET NAMES ‘utf8’”);
      mysqli_query($conn,‘SET character_set_connection=utf8’);
      mysqli_query($conn,‘SET character_set_client=utf8’);
      mysqli_query($conn,‘SET character_set_results=utf8’);
      ?>
      E no html
      Mesmo assim as palavras com acento ficam com aquele erro desgraçado com a interrogação
      Alguem me ajuda ai
    • By Sapinn
      Tenho um form que pergunto o nome, sobrenome, email, idade e telefone de contato. Como faço para verificar se o email digitado já foi cadastrado e retorna na mesma pagina uma mensagem caso ele ja existe ou prosseguir para a area do usuario caso ele não exista sem da refresh na página.
    • By Wanderson Moreira
      bom dia, 

      preciso fazer um select e verificar se o ID do usuário logado existe em em uma coluna do banco de dados
      por exemplo

      ID Usuario: 6
      coluna do banco: 1, 3, 5, 16
       
      O problema é que se eu fizer o select com LIKE ele considera o numero 16 como 1 e 6 invés de considerar um numero só, com isso o usuário 6 acaba sendo incluso no select indevidamente
       
      alguém poderia me ajudar?
    • By Diego-SLP
      Boa tarde,
       
      Tenho um while retornando alguns dados do meu banco e gostaria que nessa tabela a ultima linha fosse a soma da coluna, como posso fazer isso ?
       
      Obrigado
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.