Ir ao conteúdo
  • Cadastre-se

Verificar se existe registro na tabela


Poliano Martini

Posts recomendados

Olá pessoal,

 

tenho um valor e quero saber se contém em uma determinada coluna de uma tabela, apenas quero saber se existe e retornar true ou false.

 

Sei que por exemplo, poderia consultar na tabela, retornar um somatório e verificar se a quantidade é maior que 0 (zero), mas tem algum meio diferente como uma função ou algo do tipo?

 

Imagina-se que exista uma tabela com milhares de registros, e o na posição 1 (um) seja o valor que estou procurando, não vejo a necessidade de continuar a consulta, pois o propósito é apenas de verificar se existe o mesmo.

Link para o comentário
Compartilhar em outros sites

  • Moderador

O mysql não possui valores booleanos, contudo, possui o campo tinyint (0 ou 1) que é a mesma coisa.

 

Particularmente prefiro usar a comparação se o numero de registros for igual a zero, é porque o registro não existe, se retornar 1 ou mais,  ele existe. 

 

exemplo:

$consulta = mysql_query("select * from usuario where nome = '$nome' ");$numRegistros = mysql_num_rows($consulta);if( $numRegistros == 0):   echo "Nenhum registro encontrado";else:   echo "Registro existente";
Link para o comentário
Compartilhar em outros sites

Particularmente prefiro usar a comparação se o numero de registros for igual a zero, é porque o registro não existe, se retornar 1 ou mais,  ele existe. 

 

Sim, dessa forma é uma solução, mas como disse, acho meio desnecessário verificar a tabela toda.

 

Somente gostaria de saber se há uma outra solução.

Link para o comentário
Compartilhar em outros sites

  • Moderador

Não acho desnecessário, obrigatoriamente independente de uma tabela de 10 registros ou um 10mil registros.. você vai TER que varrer a tabela toda para saber se aquele valor que você quer existe.

 Agora você pode usar junto a clausla DISTINCT para não listar valores repetidos.

Link para o comentário
Compartilhar em outros sites

você vai TER que varrer a tabela toda para saber se aquele valor que você quer existe.

 

Exatamente por isso, se você já encontrou o registro, não teria o porque continuar lendo a tabela. Só uma questão de desempenho.

 

Ex: Uma tabela com 100 bilhões de registros, suponha-se que o valor que você quer encontrar esteja no primeiro registro, não vejo ter que precisar ler as demais linhas. Acho que seria mais simples parar a leitura e retornar o valor true, pois esse é o propósito.

 

Vá que exista isso! :) Por isso abri o tópico, pra tentar entender melhor.

Link para o comentário
Compartilhar em outros sites

  • Moderador

Sinta-se livre para perguntar!

 

Então, imagina o caso como a tabela tem 100 bilhões de registros, você quer procurar um dado exclusivo.. você precisa de uma consulta otimizada. 

Obviamente, para que elas sejam de fato mais rápidas, seu banco deve respeitar as Normas Formais (faz parte das boas práticas).

 

Por exemplo se você quer buscar as informações do usuário cujo o nome é: "Ciclano",  basta fazer a consulta usando a  clausula  Distinct  e limitar em 1, assim ele só percorre a tabela até achar.  se tá no fim, ele percorre a tabela inteira,  se tá no inicio ele não percorre. :)

 

 

Na minha opinião o desempenho vem muito da questão de seguir as boas práticas, tanto no SQL quanto na linguagem da programação ,

tentar fazer  a instrução SQL de forma mais limpa, criar Store procedures, functions Views,  todos são recursos que auxiliam muito. 

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!