Ir ao conteúdo
  • Cadastre-se
Poliano Martini

Verificar se existe registro na tabela

Recommended Posts

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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";

Compartilhar este post


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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, para sua pesquisa ser o mais rápida possível da forma que foi perguntada

 

o campo valor teria que ter um índice

 

e você faria o select com LIMIT

 

SELECT campo FROM tabela WHERE VALOR = 15.25 LIMIT 0,1

 

Com limit ele vai parar de varrer os dados.

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





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×