Otimização de Consultas
O Data Warehouse é construído sobre o ClickHouse, um banco de dados colunar. Isso significa que as consultas se comportam de forma diferente de um banco de dados relacional tradicional. Aqui explicamos como aproveitar a estrutura para obter resultados rápidos.Princípios Fundamentais
1. Sempre filtre por data
Todas as tabelas de fatos são particionadas por mês (toYYYYMM(created_at)). Filtrar por data permite ao ClickHouse pular partições inteiras sem lê-las.
2. Você não precisa filtrar por company_id
Seu usuário tem uma política de linha que filtra automaticamente pela sua empresa. Você não precisa adicionarWHERE company_id = ... — é aplicado de forma transparente.
3. Selecione apenas as colunas que precisa
ClickHouse é colunar: ele só lê as colunas que você menciona no seuSELECT. Menos colunas = menos dados lidos = mais rápido.
4. Use LIMIT para explorar
Ao explorar dados, useLIMIT para evitar trazer milhões de linhas:
Estrutura Interna das Tabelas
Cada tabela tem uma ordem de classificação (sort key) que determina como os dados são organizados em disco. Consultas que filtram pelas primeiras colunas do sort key são muito mais eficientes.Sort Keys por Tabela
company_id é sempre a primeira coluna do sort key. Como seu usuário tem um filtro automático por empresa, todas as suas consultas aproveitam essa otimização sem que você precise fazer nada.Índices Secundários
Algumas tabelas têm índices adicionais que ajudam a filtrar por colunas que não estão no sort key:Limites do Sistema
Seu usuário tem os seguintes limites para proteger a estabilidade do sistema:
Se sua consulta exceder algum desses limites, ela será cancelada automaticamente. Para evitar:
- Adicione filtros de data mais estreitos
- Selecione menos colunas
- Use
LIMIT - Pré-agregue com
GROUP BYem vez de trazer linhas individuais
Padrões Comuns
JOIN entre tabelas de fatos
Você pode cruzar tabelas usandoconversation_id ou survey_user_id: