← Voltar ao blog

Firebird: FIRST e SKIP vs LIMIT — quando usar cada um

Firebird não tem LIMIT/OFFSET: a paginação é feita com FIRST e SKIP. Veja a sintaxe correta, o custo de SKIP alto e o que substitui a cláusula no 3.0.


Se você está migrando de MySQL/PostgreSQL para Firebird, uma das primeiras surpresas é que o Firebird não suporta LIMIT/OFFSET. Em vez disso, usa FIRST e SKIP.

Sintaxe

-- MySQL/PostgreSQL
SELECT * FROM clientes LIMIT 10 OFFSET 20;

-- Firebird
SELECT FIRST 10 SKIP 20 * FROM clientes;

FIRST: limitar resultados

-- Top 5 clientes mais recentes
SELECT FIRST 5 nome, data_cadastro
FROM clientes
ORDER BY data_cadastro DESC

SKIP: pular resultados (paginação)

-- Página 2 (10 por página)
SELECT FIRST 10 SKIP 10 nome, data_cadastro
FROM clientes
ORDER BY data_cadastro DESC

Armadilhas comuns

  1. FIRST/SKIP vêm antes do SELECT — sintaxe diferente do padrão SQL
  2. Sem ORDER BY, o resultado é imprevisível — sempre ordene
  3. SKIP sem FIRST — pula mas retorna todos os restantes

Dica de performance

Para paginação eficiente, use índices na coluna de ordenação:

CREATE INDEX idx_clientes_data ON clientes(data_cadastro);

Precisa gerar queries Firebird com paginação? O Sqlify gera SQL Firebird válido a partir de português — inclusive com FIRST e SKIP.

Conclusão

FIRST e SKIP são a forma Firebird de LIMIT/OFFSET. A diferença é a posição na query (antes do SELECT) e a semântica (FIRST = quantos retornar, SKIP = quantos pular).