< blog
9 min read

The $42,000 Waste Nobody Noticed: Why Snowflake Query Optimization Starts With Seeing

A data team we work with had a good handle on their warehouse bill. They knew their biggest pipelines, their busiest dashboards and roughly what each team spent. Nothing looked out of place.

As the company kicked off a cost reduction and efficiency effort, the data team took a closer look at their queries, and what they found took them by surprise. One user stood out: $42,000 a year spent on queries that failed. Not slow queries or expensive reports, but queries that ran, used compute, returned nothing and got billed anyway. Week after week, for months, without a single person noticing.

Nobody was careless. The waste was simply invisible. This is usually how it happens: an automated job sends the same query on a schedule. Each time, the query runs for a while, hits an error and stops. The error lands in a log nobody reads, so the job simply tries again next time. Meanwhile, the warehouse charges for every minute a query runs, whether it succeeds or not. On the monthly bill, all those failed attempts blend into one total with the work that did succeed.

That is the uncomfortable truth about most data warehouses: the biggest problems are rarely the ones people complain about. They are the ones nobody can see.

Why failed queries hide so well

A warehouse bill tells you how much you spent. It doesn’t tell you how much of that spend produced nothing.

When a query fails, the work it did before failing still counts. If it ran for 30 minutes and then hit an error, you pay for 30 minutes. If a scheduled job fails every night, you pay every night. On the invoice, those failures look exactly like successful work.

The people closest to the problem rarely see the full picture either. An engineer sees an error message once and moves on. A scheduler quietly tries again tomorrow. A dashboard user assumes the system is slow today. Each person sees one small moment. Nobody sees the pattern, and nobody sees the total.

The dashboard that almost never loaded

Here is another pattern we found in a customer’s data, this time in a single dashboard.

Over one week, the query behind that dashboard ran 239 times. 222 of those runs failed, about 93%. Some ran for a full hour before the system cut them off. Most were stopped by the person waiting, who then tried again.

Think about what that means for the people involved. Several colleagues opened the same report, watched it spin and gave up. Some came back and tried again. From their side, it was a frustrating report that “never works.” From the bill’s side, it was close to $250 a week, more than $12,000 a year, spent on a report that almost nobody actually got to see.

This is why cost and performance can’t be treated as separate conversations. The same query was wasting money and wasting people’s time. Fixing one fixes the other.

Failures are only the start

Failed queries are the easiest kind of hidden waste to explain, but they are not the only kind. A few others show up again and again:

  • Retries. A query fails and the system quietly runs it again, sometimes several times, before it works. The result arrives in the end, so nobody notices it cost three times as much.
  • Running out of memory. When a query needs more working memory than it has, it starts moving data back and forth to slower storage. In technical terms this is called spillage. In plain terms, the query gets much slower and much more expensive.
  • Blocking. Some queries hold on to data while they run, and everything else that needs that data has to wait. One slow query can make a whole queue of other work late.

None of these show up on an invoice as a line item, and most never trigger an alert. They just make the warehouse a little slower and a little more expensive, every day.

Why gut feel picks the wrong queries

When teams do set time aside to optimize, they usually start with the query that annoyed them most recently. The report the CFO complained about. The job that broke on Monday.

That feels productive, but it is a poor way to choose. The loudest problem is rarely the biggest one. Neither story above was on anyone’s radar. They were found by looking at the numbers, not by listening to complaints.

A better starting point is simple: how much does a query cost each time it runs, and how often does it run? A query that costs a few dollars and runs hundreds of times a day matters far more than a slow report opened once a month. Fix it once, and the savings repeat every day after.

Ranking work this way changes the conversation inside the company. Instead of “we’re looking into costs,” the data team can say exactly which queries they are fixing, why those came first and what each one is worth.

A problem found is not a problem fixed

Even when a team finds the right problem, it often stays unfixed. Someone shares it in a meeting, everyone agrees it matters, and a month later the same query is still running the same way.

The reason is usually ownership. Query performance sits between teams: the analysts who wrote the query, the engineers who run the pipelines, the platform team that manages the warehouse. When a problem belongs to everyone, it belongs to no one.

Accountability doesn’t need to be heavy. It needs three simple things:

  1. A name. Every problem worth fixing has one person or team responsible for it.
  2. A status. Everyone can see whether it is waiting, being worked on, done or deliberately left alone.
  3. Context. A short note on what was found and what was decided, so nobody has to rediscover it six months later.

With those in place, optimization stops being a one-time cleanup project and becomes a steady habit: see the problem, decide what matters most, give it to someone and follow it through.

From knowing to fixing

Once a team knows where to focus, one question remains: what exactly should change? Why does this query fail? Why does it run out of memory? What would make it cheaper without changing its results?

That answer used to mean hours of digging through query plans and logs, usually by the one engineer who knew the system best. Today it doesn’t have to. An assistant that understands your warehouse can look at the query, explain what is going wrong in plain language and suggest the fix. The engineer reviews it and decides, rather than starting from a blank page.

This is where the habit pays off. Seeing the problem tells you where to look. Prioritizing tells you what to do first. Getting to the fix quickly is what turns a finding into savings.

How Seemore helps

Both customer stories came from Seemore’s Query optimization page, built around exactly this habit.

It brings every recurring query into one view and ranks them by what they cost each time they run, so the first fix is the one worth the most. Next to cost, it surfaces the problems teams usually don’t see: failed queries, retries, memory spillage and blocking. Each query can be assigned to a person or team, given a status and annotated with a comment, so what gets found gets fixed.

When it’s time to fix a query, teams use the Seemore Assistant, or connect their own AI tools through the Seemore MCP, to understand what is wrong and how to change it. Customers working this way have solved some of the most important issues in their warehouse, not just the ones that were easiest to spot.

“Seemore assistant solved a major problem for us, that saved us 6% of our Snowflake spend. It helped me understand all the bottlenecks in a very big query that kept getting longer month by month. We implemented the changes, and since then it saved us a lot of money.”

Zach Beniash, Senior Director of Data, At-Bay

Read the full story: How At-Bay reduced manual Snowflake management with automated cost optimization and end-to-end lineage

Frequently asked questions

Do failed queries cost money in Snowflake?

Yes. In Snowflake and other cloud data warehouses, you pay for the compute a query uses while it runs, whether it succeeds or fails. A query that runs for 30 minutes and then errors out is billed for 30 minutes.

How can a company waste thousands of dollars on failed queries without noticing?

Usually through automation. A scheduled job keeps sending a query that keeps failing, the errors land in logs nobody reads, and the job tries again next time. Each attempt is billed and blends into the monthly total. One data team found $42,000 a year in failed queries from a single user this way.

Why don't cost reports show wasted query spend?

Because a bill shows how much you spent, not what that spend produced. Failed, retried and slow queries look exactly like useful work on an invoice, and each person only sees one small piece of the pattern.

What is query optimization?

Query optimization means finding the queries that cost too much or run too slowly, and changing them so they use fewer resources. It lowers warehouse costs and speeds up the reports and pipelines people depend on.

Is query optimization about cost or performance?

Both. A query that fails, retries or waits on other work wastes money and slows people down at the same time. A dashboard whose query fails most of the time costs money and leaves the people waiting on it without answers.

What hidden query problems should data teams look for?

Four come up again and again: failed queries that are billed but return nothing, retried queries that run several times before succeeding, memory spillage that makes a query slower and more expensive, and blocking queries that make other work wait. None of them appears as a line item on the bill.

Which queries should we optimize first?

Start with recurring queries that have the highest cost per run, then weigh how often they run. A query that runs hundreds of times a day pays back every fix daily, while a slow report opened once a month rarely does.

How do teams stay accountable for query optimization?

Give every issue an owner, a visible status and a short note on what was decided. That turns findings into tracked work instead of a report nobody acts on.

How can AI help fix slow or expensive queries?

An AI assistant that understands your warehouse can analyze a query, explain in plain language why it fails or slows down, and suggest what to change. Engineers review the suggestion instead of digging through query plans from scratch. At-Bay used the Seemore Assistant this way to fix a large query and save 6% of its Snowflake spend.

How does Seemore help with query optimization?

Seemore ranks recurring queries by cost per run, surfaces failed, retried, spilling and blocking queries, and lets teams assign each one an owner and status. To fix a query, teams use the Seemore Assistant or connect their own AI tools through the Seemore MCP.