Skip to main content

Otimização de Consultas

O Analytics Warehouse roda em ClickHouse, um banco de dados colunar. As queries se comportam de forma diferente de um banco de dados relacional tradicional — alguns hábitos as tornam dramaticamente mais rápidas.

Princípios-chave

1. Sempre filtre por data

Os dados são organizados fisicamente por tempo. Um filtro de data permite que o ClickHouse pule blocos inteiros de histórico sem lê-los — e como o warehouse agora serve o histórico completo (não apenas 3 meses), os filtros de data importam mais do que nunca. Cada tabela tem uma coluna de tempo principal para filtrar:

2. Você não precisa filtrar por company_id

Seu usuário tem uma row policy que filtra pela sua empresa automaticamente, e os dados são ordenados primeiro por empresa — todas as queries se beneficiam disso sem que você precise adicionar nada.

3. Selecione apenas as colunas de que você precisa

O ClickHouse lê apenas as colunas que você menciona. Isso importa principalmente nas colunas de texto largas (text, content, ai_automator_instructions): deixá-las fora de um SELECT pode reduzir o custo de uma query em uma ordem de magnitude.

4. Agregue no banco de dados, não na sua ferramenta

Extraia respostas, não linhas brutas. Um GROUP BY sobre milhões de linhas retorna em bem menos de um segundo; baixar esses milhões de linhas para uma ferramenta de BI, não.

5. Use os resumos diários quando eles atenderem

fact_campaign_daily e fact_agent_daily pré-calculam as métricas de dashboard mais comuns. Um dashboard sobre um resumo diário lê milhares de linhas em vez de milhões.

6. Use LIMIT ao explorar

Dicas de JOIN

  • Faça join por ids, não por nomes: session_id, agent_conversation_id, hsm_id — os nomes são para exibição.
  • Coloque a tabela pequena do lado direito do JOIN — o ClickHouse carrega o lado direito na memória. As dimensões são sempre pequenas; o join entre duas tabelas de fatos grandes funciona melhor quando os dois lados carregam um filtro de data.
  • Inclua company_id na chave do join ao juntar fatos com dimensões (como fazem os exemplos desta documentação).

Limites do sistema

Seu usuário roda com limites de proteção que mantêm a plataforma estável para todos: Se uma query for cancelada por um limite:
  • Adicione ou restrinja o filtro de data (a solução em quase todos os casos)
  • Remova colunas desnecessárias — especialmente colunas de texto largas
  • Agregue com GROUP BY em vez de extrair linhas brutas
  • Divida extrações muito grandes em blocos de um mês (veja Sincronização Incremental para o padrão que evita extrações grandes por completo)