Ir para conteúdo
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?

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por luisfeliperm2
      Estou criando um sistema de login e cadastro de um jogo em php. Conectei ao postgresql e agora estou com um problema. Preciso saber qual criptografia é utilizada. Todas as hashs possuem 32 caracteres e por isso pensei que fosse MD5. Mas não é.
      password - > 62f9f2022536274b47f4daa0887361cf
      teste1 -> deaafc806aef00d0262e098ff089fff1
      Outras senhas criptografadas:
      59a93faaaf6d43ca4c3ef9ec183200ea
      47d163c4e9388dfd4b2dc7c327a33761
      8dffc56f2382d0f5552c04d9fa014d0e
    • Por caioandreis
      Olá, pessoal. Tudo bem?
      Gostaria de pedir um direcionamento com a seguinte situação:
       
      Tenho um amigo que tem um site feito em php, com painel gerenciador de conteúdo. Como estou estudando mais a fundo php agora, gostaria de pegar um site que funciona e estudar em cima dele: (alterar tanto layout quanto incluir/retirar novas funcionalidades).
       
      Meu amigo liberou o acesso ao ftp e banco de dados dele, para eu fazer uma cópia e colocar em um localhost (xampp) para estudar em cima dele. Assim, não corro risco de danificar o site dele que está no ar.
       
      Já estou com a pasta do site dentro do htdocs, e o banco de dados importado no phpmyadmin, porém ao tentar acessar o site, o browser acusa erro no servidor. 500
       
      Busquei tutoriais sobre isso, mas encontrei apenas passo-a-passo para sites em wordpress. Com isso, vem a pergunta:
       
      Alguém tem algum tutorial ou poderia me dizer como faço para "plugar" o site com o banco de dados no localhost? 
       
      Peço desculpas se a pergunta é muito leiga mas, como não encontrei nada específico sobre o assunto, achei que valia a tentativa.
       
      Desde já, agradeço pela atenção.
       
      Caio
       
       
       
       
    • Por DoVaK
      Boa tarde,
       
      Estamos desenvolvendo um software wms (controle de estoque) que inicialmente funcionará na nuvem.
      Por ser um sistema complexo e com enorme quantidade de dados, estamos pensando em criar um banco de dados separado para cada empresa (cliente).
      Teriamos um banco de dados nosso onde estariam centralizadas algumas informações importantes, tais como as informações de cada empresa, dados para pagamento e os códigos que referenciariam o banco de dados especifico de cada cliente nosso (para fazer o redirecionamento correto no login).
      Seguem as dúvidas:
       
       - Esta seria uma boa forma de modelagem? 
       - Seria interessante ter o cadastro de todos os usuários no nosso banco de dados central ou deixar a tabela de usuários no banco de cada empresa?
       
      OBS: o SGBD é o MySQL.
       
      Obrigado pela ajuda.
       
      Jonathan.
    • Por JeysonRomualdo
      <?php //conexão com banco de dados.   $pdo = new PDO("mysql:dbname=cadastro", "root", "");   ?>   <html> <head> <title>Autenticando Usuario</title> <script type="text/javascript"> function loginsussesfully() { setTimeout("window.location='painel.php'", 5000); } function loginfailed(){ setTimeout("window.location='login.php'", 5000); } </script> </head> <body>   <?php //capturando informaçoes digitadas pelo usuario $email = $_POST['email']; $senha = $_POST['senha']; $sql = "SELECT * FROM usuarios WHERE email = '$email' and senha = '$senha'"; $row = mysql_num_rows($sql); if ($row > 0) { session_start(); $SESSION['email'] = $_POST['email']; $SESSION['senha'] = $_POST['senha']; echo "<center>Você foi autenticado com susseco!</center>"; echo "<script>loginsuccesfully</script>"; } else{ echo "<center>Nome de usuario ou senha invalidos!</center>"; echo "<script>loginfailed</script>"; } ?>   </body>   </html> erro na linha 25... nao consigo identificar o que pode estar errado ou faltando
    • Por Fabricio N. B
      Estou fazendo um projeto da escola que é um sistema para informatizar uma locadora de filmes, porém preciso listar os filmes mais alugados no mês e não estou sabendo fazer essa parte.
       
      Abaixo segue minhas tabelas mysql:
       
      create table clientes (
      id BIGINT NOT NULL AUTO_INCREMENT,
      nome VARCHAR(255),
      email VARCHAR(255),
      rg VARCHAR(255),
      endereco VARCHAR(255),
      dataNascimento DATE,
      primary key (id)
      );
       
       
      create table filmes (
      id BIGINT NOT NULL AUTO_INCREMENT,
      titulo VARCHAR(255),
      genero VARCHAR(255),
      anoLancamento int,
      primary key (id)
      );
       
       
      create table alugueis (
      id BIGINT NOT NULL AUTO_INCREMENT,
      cliente bigint,
      filme bigint,
      dataAluguel DATE,
      dataDevolucao DATE,
      primary key (id),
      foreign key (cliente) references clientes(id),
      foreign key (filme) references filmes(id)
      );
       
       
      Desde já agradeço.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.