← Voltar ao blog

Como otimizar queries lentas no Firebird

Query lenta no Firebird raramente é falta de hardware: veja os cinco pontos que mais pesam, do plano de execução ao SELECT * e à subquery correlacionada.


Query lenta em Firebird? Antes de culpar o banco, verifique estes 5 pontos.

1. Use EXPLAIN PLAN

SET PLAN ON;
SELECT * FROM clientes WHERE nome = 'João';

O plano mostra se a query usa índice ou faz full table scan.

2. Crie índices nas colunas de filtro

-- Se a query filtra por data, crie índice
CREATE INDEX idx_pedidos_data ON pedidos(data_pedido);

3. Evite SELECT *

-- Lento: carrega todas as colunas
SELECT * FROM pedidos WHERE data_pedido >= CURRENT_DATE - 30

-- Rápido: apenas colunas necessárias
SELECT cliente_id, valor, data_pedido FROM pedidos WHERE data_pedido >= CURRENT_DATE - 30

4. Use FIRST para limitar resultados

-- Sem limite: pode retornar milhares de linhas
SELECT nome FROM clientes ORDER BY nome

-- Com limite: apenas o necessário
SELECT FIRST 50 nome FROM clientes ORDER BY nome

5. Evite subqueries correlacionadas

-- Lento: subquery executada para cada linha
SELECT nome FROM clientes c
WHERE (SELECT COUNT(*) FROM pedidos p WHERE p.cliente_id = c.id) > 5

-- Rápido: use JOIN + GROUP BY
SELECT c.nome
FROM clientes c
JOIN pedidos p ON p.cliente_id = c.id
GROUP BY c.nome
HAVING COUNT(*) > 5

Precisa de ajuda para otimizar suas queries? Descreva o problema em português no Sqlify e receba uma query otimizada com dicas de performance.

Conclusão

Performance no Firebird depende de índices, queries bem escritas e uso correto de FIRST/SKIP. Sempre use EXPLAIN PLAN antes de otimizar.