Optimización de Consultas
El Data Warehouse está construido sobre ClickHouse, una base de datos columnar. Esto significa que las consultas se comportan diferente a una base de datos relacional tradicional. Aquí te explicamos cómo aprovechar la estructura para obtener resultados rápidos.Principios Clave
1. Siempre filtra por fecha
Todas las tablas de hechos están particionadas por mes (toYYYYMM(created_at)). Filtrar por fecha permite a ClickHouse saltar particiones enteras sin leerlas.
2. No necesitas filtrar por company_id
Tu usuario tiene una política de fila que filtra automáticamente por tu empresa. No necesitas agregarWHERE company_id = ... — se aplica de forma transparente.
3. Selecciona solo las columnas que necesitas
ClickHouse es columnar: solo lee las columnas que mencionas en tuSELECT. Menos columnas = menos datos leídos = más rápido.
4. Usa LIMIT para explorar
Cuando estés explorando datos, usaLIMIT para evitar traer millones de filas:
Estructura Interna de las Tablas
Cada tabla tiene un orden de clasificación (sort key) que determina cómo se organizan los datos en disco. Las consultas que filtran por las primeras columnas del sort key son mucho más eficientes.Sort Keys por Tabla
company_id es siempre la primera columna del sort key. Como tu usuario tiene un filtro automático por empresa, todas tus consultas aprovechan esta optimización sin que tengas que hacer nada.Índices Secundarios
Algunas tablas tienen índices adicionales que ayudan a filtrar por columnas que no están en el sort key:Límites del Sistema
Tu usuario tiene los siguientes límites para proteger la estabilidad del sistema:
Si tu consulta excede alguno de estos límites, será cancelada automáticamente. Para evitarlo:
- Agrega filtros de fecha más estrechos
- Selecciona menos columnas
- Usa
LIMIT - Pre-agrega con
GROUP BYen lugar de traer filas individuales
Patrones Comunes
JOIN entre tablas de hechos
Puedes cruzar tablas usandoconversation_id o survey_user_id: