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.