Back to home
Best Practices
Apr 25, 2026 8 min read

The Snowflake Cost Optimization Playbook: 7 Patterns That Cut Your Bill 40%

After auditing dozens of Snowflake accounts, the same 7 patterns drain budgets over and over. Here's the exact playbook with copy-pasteable SQL fixes.

L

Lakshmi Kiranmai Guduru

Founder, CARTIEAI

If you're reading this, your Snowflake bill probably looks like this: it grew. Then it grew again. Then your CFO sent you a Slack message with a screenshot of last quarter's spend and a single question mark.

Here's the truth nobody tells you: most Snowflake accounts waste 25–40% of their credits. Not because the platform is expensive — it's brilliantly priced — but because the defaults reward you for easy, not for cheap.

After auditing dozens of Snowflake accounts, I've seen the same 7 patterns drain budgets over and over. Here's the playbook.


Pattern 1: The 24/7 Warehouse Nobody Asked For

The waste: A warehouse left running all night because someone forgot to set AUTO_SUSPEND.

A Medium warehouse left always-on burns ~$600/day in credits even if nobody queries it. Multiply by 30 days and a few warehouses and you have a 5-figure monthly leak.

The fix (1 SQL statement):

ALTER WAREHOUSE ANALYTICS_WH SET AUTO_SUSPEND = 60;

Expected savings: 20–40% of warehouse credits.


Pattern 2: Auto-Suspend Set to 5+ Minutes

Imagine this query pattern:

  • Query at 9:00 AM (runs 30 seconds)
  • Query at 9:08 AM (runs 30 seconds)
  • Query at 9:18 AM (runs 30 seconds)

With a 10-minute auto-suspend, your warehouse is "active" for the entire 18 minutes even though you only queried for 1.5 minutes total.

The fix:

ALTER WAREHOUSE BI_WH SET AUTO_SUSPEND = 60;

Expected savings: 10–25% on warehouses with bursty query patterns.


Pattern 3: The X-Large Warehouse Running Tiny Queries

The waste: Snowflake credits scale 2x per size tier. An X-Large warehouse costs 16x more per hour than an X-Small. If 75% of your queries finish in under 10 seconds, you're absurdly over-provisioned.

Diagnostic SQL (run this — it's eye-opening):

SELECT 
  warehouse_name,
  warehouse_size,
  COUNT(*) AS query_count,
  AVG(execution_time)/1000 AS avg_seconds,
  PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY execution_time) / 1000 AS median_seconds,
  SUM(credits_used_cloud_services) AS credits
FROM snowflake.account_usage.query_history
WHERE start_time > DATEADD(day, -30, CURRENT_TIMESTAMP())
GROUP BY 1, 2
ORDER BY credits DESC;

If your median query is under 10 seconds on a Large or X-Large, you're paying for capacity you don't use.

Expected savings: 30–50% on warehouse credits.


Pattern 4: 90-Day Time Travel on Dev Schemas

The waste: Time Travel multiplies your storage cost by retention days. 90 days on dev/staging? You're paying full storage prices for data nobody will ever restore.

The fix:

-- Drop dev/staging time-travel to 1 day
ALTER SCHEMA DEV_DB.STAGING SET DATA_RETENTION_TIME_IN_DAYS = 1;

-- Production tables that truly need recovery: keep 7-30 days
ALTER TABLE PROD_DB.ORDERS SET DATA_RETENTION_TIME_IN_DAYS = 7;

Expected savings: 40–80% on storage costs in dev/staging environments.


Pattern 5: Multi-Cluster Always-On

The fix: Configure auto-scale, not always-on.

ALTER WAREHOUSE BI_WH SET 
  MIN_CLUSTER_COUNT = 1,
  MAX_CLUSTER_COUNT = 4,
  SCALING_POLICY = 'STANDARD';

Expected savings: 20–60% on multi-cluster warehouses.


Pattern 6: The Forgotten Resource Monitor

A runaway query at 2 AM can torch $10K before anyone notices.

The fix:

CREATE OR REPLACE RESOURCE MONITOR BI_WH_MONTHLY 
  WITH CREDIT_QUOTA = 5000
       FREQUENCY = MONTHLY
       TRIGGERS 
         ON 75 PERCENT DO NOTIFY
         ON 90 PERCENT DO SUSPEND
         ON 100 PERCENT DO SUSPEND_IMMEDIATE;

ALTER WAREHOUSE BI_WH SET RESOURCE_MONITOR = BI_WH_MONTHLY;

This single guardrail has saved teams 5-figure incident bills.


Pattern 7: Nobody Reviews the Bill

The most expensive Snowflake accounts I've seen aren't the ones with bad config — they're the ones where nobody owns cost.

The fix: Make Snowflake cost visible weekly.

  1. Set a weekly Slack alert on warehouse-level spend
  2. Post the top 5 spending warehouses to a #finops channel every Monday
  3. Assign a single owner per warehouse

Expected savings: 10–20% just from awareness alone.


TL;DR

PatternAvg savingsTime to fix
1. Always-on warehouses20–40%1 SQL statement
2. Long auto-suspend10–25%1 SQL statement
3. Over-provisioned size30–50%1 week test
4. Long time-travel40–80% on storage1 SQL statement per schema
5. Multi-cluster always-on20–60%1 SQL statement
6. No resource monitorsCaps incident risk10 minutes
7. No weekly review10–20%1 hour to set up

The cheapest Snowflake account isn't the one with the smallest warehouse. It's the one with the tightest feedback loop.

Take 60 seconds to find out where you stand: Run the free Snowflake Cost Health Score.

Go deeper · Field guide
❄️

Snowflake Cost Optimization: The Complete Guide (2026)

Snowflake bills 10x more than people expect because the pricing is workload-based and most teams have never tuned a warehouse. This guide gives you the 9 patter…

Read the Snowflake guide

FREE — NO SIGNUP — 60 SECONDS

Find your Snowflake waste right now.

Take the free 10-question Snowflake Cost Health Score. Get a grade, your monthly $-waste estimate, and the top 3 fixes — instantly.

THE FINOPS BRIEF

3 cost-saving tips, every Tuesday.

Built for finance & engineering teams who are tired of paying for cloud they don't use. No fluff. Just what works.

Unsubscribe anytime. We never sell your data.

Lakshmi Kiranmai Guduru

ABOUT THE AUTHOR

Lakshmi Kiranmai Guduru

Founder, CARTIEAI · Building in public

I'm building CARTIE AI to fix the cloud-cost problem I saw drain millions at companies I worked for — where engineering and finance kept talking past each other. If you liked this post, here's where I share unfiltered notes on building this in public:

Keep reading

We value your privacy. Cookies help us improve your experience. Learn more

Install CARTIE AI

Add to your home screen for quick access and offline support