Aplicacion de SQL para optimizar
Proyeccion, filtros, joins, casts, UNION ALL, MERGE, determinismo y Top-K pruning.
Conceptos que debes poder reconocer y distinguir:
- Projection pruning
- Predicate filtering
- Join strategy
- Casts
- UNION ALL
- MERGE
- Determinismo y Top-K pruning
Usa los enlaces oficiales de Snowflake de esta unidad para ampliar cada concepto y contrastar su comportamiento.
La optimizacion SQL empieza por devolver y procesar solo lo necesario. Proyectar columnas, aplicar filtros selectivos y verificar cardinalidad de joins suele dar mas resultado que añadir recursos sin cambiar el plan.
Patron y decision
| Patron | Mejor decision | Razon |
|---|---|---|
| No hay duplicados que eliminar | UNION ALL | Evita el coste de distinct implicito de UNION |
| Join produce muchas mas filas de lo esperado | Revisar condicion y granularidad | Un exploding join se corrige en la logica, no con mas clusters |
| Se comparan tipos incompatibles | Casts explicitos y coherentes | Evita conversiones implicitas y filtros menos eficientes |
| Solo interesan K resultados ordenados | ORDER BY + LIMIT elegibles | Puede activar Top-K pruning en patrones compatibles |
| Carga incremental con inserciones y cambios | MERGE bien condicionado | Evita varios pasos y controla la correspondencia origen-destino |
Checklist de SQL
- Evita SELECT * en consultas de produccion si no necesitas todas las columnas.
- Filtra antes de joins cuando sea semantica y logicamente correcto, y comprueba que los filtros sean aplicables y selectivos.
- No asumas que una CTE siempre materializa o siempre se reutiliza: revisa el perfil del plan para el caso real.
- Usa DISTINCT solo cuando el requisito requiere eliminar duplicados; es una operacion que puede ser costosa.
- Top-K pruning necesita condiciones especificas, como ORDER BY y LIMIT; no es una propiedad automatica de cualquier LIMIT.
- Resultados reutilizables dependen de condiciones de validez; no construyas un benchmark alrededor de una cache no controlada.