Virtual warehouse sizing
Start small (X-Small or Small). Scale up for complex queries, scale out (multi-cluster) for concurrency. Auto-suspend after 60 seconds of inactivity — the most impactful cost control.
Clustering keys
Snowflake micro-partitions are automatically sorted by insert order. For large tables queried by date ranges or a high-cardinality filter column, define a cluster key. Reclustering runs in the background and improves partition pruning dramatically.
Query optimization
- Avoid
SELECT *— Snowflake charges by bytes scanned. - Filter early and on clustered columns.
- Use result caching — identical queries within 24h are free (no compute).
- Materialise intermediate CTEs as tables if referenced more than once.
Cost controls
- Resource monitors — set credit quotas per warehouse with alerts and auto-suspend triggers.
- Query tags — tag every query with team/project so cost allocation is auditable.
- Separate warehouses for ETL, BI, and ad-hoc — prevents analytics queries from blocking pipeline loads.