- Categorias:
LIMIT / FETCH¶
Limita o número máximo de linhas devolvidas por uma instrução ou subconsulta. Tanto LIMIT (sintaxe PostgreSQL) quanto FETCH (sintaxe ANSI) são compatíveis e produzem o mesmo resultado.
- Consulte também:
Sintaxe¶
Sintaxe PostgreSQL¶
Sintaxe ANSI¶
Parâmetros¶
countO número de linhas retornadas. Deve ser uma constante inteira não negativa.
Os valores NULL, cadeia de caracteres vazia (
'') e$$$$também são aceitos e são tratados como “ilimitados”; isto é útil principalmente para conectores e drivers (como o driver JDBC) se eles receberem uma lista incompleta de parâmetros ao vincular dinamicamente os parâmetros a uma instrução.OFFSETstartO número da linha após a qual as linhas limitadas/buscadas são retornadas. Deve ser uma constante inteira não negativa.
Se
OFFSETfor omitido, a saída começa a partir da primeira linha do conjunto de resultados.Os valores NULL, cadeia de caracteres vazia (
'') e$$$$também são aceitos e são tratados como 0 (isto é, não pular nenhuma linha); isto é útil principalmente para conectores e drivers (como o driver JDBC) se eles receberem uma lista incompleta de parâmetros quando vincularem dinamicamente parâmetros a uma instrução.ONLYPalavra-chave opcional que não afeta a saída. É usada para dar ênfase ao leitor humano.
Notas de uso¶
Uma cláusula ORDER BY não é necessária; no entanto, sem uma cláusula ORDER BY, os resultados não são determinísticos porque os resultados de consulta não estão necessariamente em nenhuma ordem específica. Para controlar os resultados retornados, use uma cláusula ORDERBY.
Uma cláusula ORDER BY em uma subconsulta garante a ordenação apenas dentro dessa subconsulta. A ordenação não é preservada em níveis de consulta externos. Quando uma cláusula LIMIT depende de uma cláusula ORDER BY de um nível de aninhamento diferente, o otimizador pode não aplicar a cláusula LIMIT como esperado, e o número de linhas retornadas pode diferir do valor LIMIT. Uma consulta COUNT(*) na mesma subconsulta também pode relatar um número de linhas diferente do número real de linhas retornadas.
Por exemplo, na consulta a seguir, a subconsulta mais interna ordena os resultados, a subconsulta do meio limita a saída a seis linhas e a consulta externa limita a saída a 100 linhas. Você pode esperar seis linhas porque a cláusula LIMIT interna é menor, mas como a cláusula ORDER BY está em uma subconsulta diferente da cláusula LIMIT, os resultados são imprevisíveis e a consulta pode retornar mais ou menos de seis linhas:
Para evitar resultados imprevisíveis, mantenha as cláusulas ORDER BY e LIMIT (ou FETCH) no mesmo nível de consulta:
A poda top-K pode melhorar o desempenho das consultas que incluem as cláusulas LIMIT e ORDER BY. Para obter mais informações, consulte Poda top-K para aprimoramento de desempenho da consulta.
TOP
ne LIMITcountsão equivalentes.Tanto a cláusula LIMIT quanto a cláusula SAMPLE retornam um subconjunto de linhas de uma tabela. Quando você usa a cláusula LIMIT, o Snowflake retorna o número especificado de linhas da maneira mais rápida possível. Quando você usa a cláusula SAMPLE, o Snowflake retorna linhas com base no método de amostragem especificado na cláusula.
Exemplos¶
Os exemplos a seguir mostram o efeito do LIMIT. Para simplificar, essas consultas omitem a cláusula ORDER BY e assumem que a ordem de saída é sempre a mesma, conforme mostrado pela primeira consulta. As consultas do mundo real devem incluir ORDER BY.
Os exemplos a seguir demonstram o uso de NULLs para indicar:
Sem limite para o número de linhas.
Comece na linha um (não pule nenhuma linha).