Ir para conteúdo
Fórum Script Brasil
  • 0

Verificar se existe ao menos um registro em outro tabela


larissaswo

Pergunta

Boa noite, pessoal

Eu procurei por essa questão em todo lugar e não encontrei nenhuma solução. Gostaria de saber se alguém poderia me ajudar:

Eu tenho duas tabelas, uma USUARIOS, e outra ATIVIDADES que relaciona todas as atividades dos usuários num site

Gostaria de selecionar os usuários que possuem ao menos um ou mais registros em ATIVIDADES. Eu tentei o seguinte forma e funcionou:

SELECT usuarios.* FROM usuarios INNER JOIN atividades ON usuarios.usuario = atividades.usuario GROUP BY usuarios.usuario ORDER BY usuarios.nome ASC

No entanto, a tabela ATIVIDADES é enorme (acho que mais de 500000 registros) enquanto que a tabela USUARIOS possui cerca de 300 registros e o mysql leva muito tempo para fazer todos esses cruzamentos (no meu caso, uns 7 segundos pelo phpmyadmin contabilizado no servidor) muito mais do que os poucos milésimos de segundo para selecionar todos os usuários.

Por fim, a questão é: existe alguma forma de fazer um SELECT somente dos usuários com pelo menos uma atividade sem percorrer toda tabela ATIVIDADES e diminuir o tempo de procura.

Obrigada

Editado por larissaswo
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Para acelerar o processo em

SELECT usuarios.* FROM usuarios INNER JOIN atividades ON usuarios.usuario = atividades.usuario GROUP BY usuarios.usuario ORDER BY usuarios.nome ASC
Crie o índice abaixo na tabela usuários:

ALTER TABLE usuarios
ADD KEY nomeDoSeuIndice (nome);
Crie o índice abaixo na tabela atividades

ALTER TABLE atividades
ADD KEY nomeDoSeuIndice (usuario)
Link para o comentário
Compartilhar em outros sites

  • 0

Muito obrigada Denis. De fato, diminuiu para a metade ou menos o tempo depois de eu ter criado os índices. Só não entendi uma coisa, toda vez que eu clico no link índice na coluna do phpmyadmin eu estou criando um índice para a coluna? E, por que aumenta o valor de "indice" no espaço ocupado da tabela?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...