27 July | 6 min read
Slow Snowflake queries can be more frustrating, especially at the time when you’ve already expanded to a larger warehouse. So, why is the delay in the execution of the query? If this sounds familiar, you are not alone.
One of the biggest misconceptions after migrating to Snowflake is that a larger warehouse will solve every performance issue. While it adds more computing power, slow queries often have other underlying problems. If performance lags, their first response is to upgrade it. But again, when you run the same query after increasing the warehouse size, and it’s still the same? After all, we were told that a larger warehouse has more computer power and should process queries faster.
But it’s not always. A larger warehouse can process more work, but it cannot fix unnecessary data scans, workload bottlenecks, poor table design, or inefficient SQL. The question hits: why are your Snowflake queries still slow after upgrading your warehouse? In this article, we will delve into the most common reasons behind the problem and the best ways to solve it.
When you upgrade the warehouse, you are basically making it bigger and stronger. A larger warehouse gives your query more resources, so it can process different parts of the workload at the same time.
If your website has hundreds of user queries running at the same time, Snowflake can get overloaded. When all execution slots are full, all the new queries are placed in a queue. Spending 45 seconds in the queue and only 5 seconds processing means the delay happens before the query even begins.
Snowflake warehouse has a limited amount of local memory known as RAM. Large queries are processed in memory whenever possible, but if they need more space, Snowflake starts using the local disk. If the data grows beyond that, it’s moved to remote storage, which is much slower to access. That’s why some queries still take a long time, even on a large warehouse.
Snowflake stores data in small, compressed pieces called micro-partitions. When a user applies a filter in a query, the platform skips unnecessary data and scans only the information it needs. This process, called partition pruning, which helps queries run faster and efficiently. If Snowflake can’t narrow down the data, it ends up reading much more than it should. As a result, Snowflake must scan the whole table, increasing query execution time.
It doesn’t matter if you have a large warehouse or not. A large warehouse alone isn’t enough. If JOINs aren’t optimized, queries can still run slowly. This frequently happens when two big tables are joined on columns that are not unique, or when the join condition is missing or incorrect. The warehouse ends up spending more time transferring data than processing it, causing overall performance to drop.
Let’s look at this with a real-time query. The following Snowflake warehouse usage query identifies the top 10 worst-performing queries over the last 15 days. It focuses on queries that were delayed because of data spilling.
Once you run the query, review the results to decide what needs to be fixed immediately.
| Metric to Watch | Root Cause | Solution |
| High queued_by_overload_seconds | The warehouse is handling too many concurrent user requests at once. | Convert your warehouse into a Multi-Cluster Warehouse to handle high user concurrency. |
| High local_spill_gb or remote_spill_gb | The query exceeds available memory and spills data to storage. | Optimize the query by breaking the workload into smaller batches, removing extra ORDER BY operations, and validating the join keys. |
| High execution_seconds (with 0GB Spilling) | The warehouse is reading more data than necessary, which slows the query. | Remove function wrappers from WHERE clauses. For multi-terabyte tables, implement an explicit Clustering Key. |
Before upgrading your warehouse size, it’s important to check a few fundamental optimizations, without adding any extra cost.
WHERE created_at >= ‘2026-01-01’
WHERE YEAR(created_at) = 2026
If you want consistently fast performance, keep these best practices in mind:
Well, the best place to start is always the query itself. Look at what data it reads, how it filters, and whether it’s doing more work than required. After that, you can decide if upgrading the warehouse is actually needed.
Always remember, the fastest Snowflake query is not always the one running on the largest warehouse. It’s the one that was written to perform the work optimally matters.