É muito comum realizar consultas no Banco de Dados que esperam receber no máximo uma linha de resultado. Por exemplo, durante a autenticação de um usuário (log-in), para recuperar o registro do BD e comparar a senha com aquela informada no formulário.
Nestes casos, pode ser útil incluir a cláusula "LIMIT", implementada por diferentes SGBDs (por exemplo, MySQL e PostgreSQL).
Se é esperado no máximo um resultado, então inclua o "LIMIT 1" no final do SELECT. Desta forma, o SGBD sabe que se encontrar algum registro não precisa percorrer os demais registros. Alguns SGBDs podem fazer isso automaticamente quando percebem que a condição de busca utilizada é feita através de um campo único (por exemplo, a própria chave primária da tabela). Afinal, se o campo é único e um registro já foi encontrado, não devem existir outros registros com o mesmo valor.
Exemplo:
$stmt = $pdo->prepare("SELCT login, senha FROM usuarios WHERE login = ':login' LIMIT 1");
Outra condição frequênte é para determinar se existem pelo menos N registros com determinada condição. Neste caso, é possível fazer o SELECT usar a função COUNT para determinar a quantidade de registros, mas incluir o LIMIT para parar de procurar caso já encontre N registros. Por exemplo, se queremos saber se existem pelo nos 5 usuários com login iniciado em "R", podemos fazer:
SELECT COUNT(login) as quantidade FROM (SELECT login FROM usuarios WHERE login LIKE 'r%' LIMIT 5) AS tabela;
Neste caso, o COUNT vai retornar 5, caso possua 5 ou mais usuários nestas condições, ou vai retornar um número menor que 5, caso existam menos. Ou seja, se existem milhões de usuários com estas condições, não será gasto tanto tempo, pois assim que os 5 primeiros forem encontrados, a SQL já devolverá o valor e não buscará outros registros.
6 comentários
Rubens eu nunca tinha pensado nisso.
Valeu.
Tente isso:
$limit = $exib_twitter != 'sim' ? 6 : 12;
$sql = mysql_query("SELECT * FROM noticias_dados order by id desc LIMIT {$limit}");
Cara, essa fonte que você colocou nos comentários é de matar!
mto bom mesmo...
achei outro artigo que complementa isso aí...
que tiver interesse:
http://tiemprosa.wordpress.com/2012/03/01/otimizacao-de-consultas/
http://tiemprosa.wordpress.com/2012/03/01/otimizacao-de-consultas/
Show. parabéns !!!
A dica do select count me foi muito útil. especialmente quando se trabalha com big data
Postar um comentário
Nota: fique a vontade para expressar o que achou deste artigo ou do blog.
Dica: para acompanhar as respostas, acesse com uma conta do Google e marque a opção "Notifique-me".
Atenção: o blogger não permite inclusão de tags nos comentários, por isso, use algum site externo para postar seu código com dúvidas e deixe o link aqui. Exemplo: pastebin.com