Selecionar Um Intervalo de Linhas em MySQL

Henrique Dias July 16, 2014
Source
O sistema de base de dados MySQL é dos mais conhecidos mundialmente devido à sua facilidade, tanto de utilização como de implantação e ao facto de ser extremamente versátil. Quando estava a listar as linhas de uma tabela MySQL numa página web, deparei-me com um sobrecarregamento do CPU do meu computador, porque eu estava a listar todas as linhas da tabela. De seguida pensei: porque não listo por páginas, cada página com x linhas? Utilizando este método, o processador ficaria menos carregado de processos, o que aumentaria a experiência do utilizador visto que este, além de receber uma resposta mais rápida, iria ver menos linhas numa página. LIMIT e OFFSET Para limitar o número de resultados dados por uma consulta SQL num sistema MySQL a um intervalo de linhas, os comandos LIMIT e OFFSET devem ser utilizados. Pode ver a consulta (query) abaixo para um exemplo ilustrativo. SELECT FROM mytable LIMIT 15 O resultado da consulta acima serão as primeiras 15 linhas da tabela mytable. Mas, e se eu quiser as segundas 15 linhas e não as primeiras? Para o fazermos, apenas temos que utilizar o comando OFFSET . Então, para obtermos as segundas quinze linhas de uma tabela MySQL, faríamos o seguinte: SELECT FROM mytable LIMIT 15 OFFSET 15 Em Português, offset quer dizer deslocamento. Podemos então dizer que a query está a ser deslocada para outro local da tabeça passando à frente das primeira 15 linhas, selecionando as segundas 15. Poderíamos ainda simplificar o código acima para o seguinte: SELECT * FROM mytable LIMIT 15,15 Estes comandos podem ser utilizados com outros como o WHERE . Em breve irei lançar um tutorial que explique como criar uma listagem de uma tabela, com páginas utilizando PHP, HTML e MySQL. Este sistema irá contar com um número fixo de linhas por página, botões de navegação e forma de impedir que o utilizador tente aceder páginas inexistentes. Espero que esta explicação vos tenha sido útil que voltem a visitar o blog :)

Discussion in the ATmosphere

Loading comments...