
Join explosions in Snowflake can cause significant performance problems. I thought I’d spend some time digging into specific examples of cases where join explosions happen and how to work around the explosion in those examples. Disjunct Join Predicates What is…

Hints have been a thing in database engines for years. I’ve always seen them as an absolute last resort, but have used them on other platforms. In general, Snowflake has not had customer configured hints. But like any optimizer, sometimes…

At work, I read a lot of customer-written SQL. This is a major part of my day job, and there are some underrated things that I regularly recommend. The ANY_VALUE() function is one of these things. The ANY_VALUE() Function The…

I am a fan of the result set cache in Snowflake. It is one of three layers of caching, and can be a reliable way to mitigate the impact of repeated queries when the underlying tables are fairly slow to…

In a recent series of articles, I walked through the query optimizer. I’ve also covered using EXPLAIN to look at queries. One of the primary disadvantages of EXPLAIN is that it does not execute the query, and is therefore missing…

While a query id is a small and simple piece of information, knowing how to find and use query ids is a useful skill in Snowflake.

I’ve recently finished a series on the Snowflake query profile. As a command-line gal at heart, I also want to cover two tools that are more text-based – explain and GET_QUERY_OPERATOR_STATS. I’ll focus on explain in this article, and then…

This article is the fourth in a series about the Snowflake Query Profile. Part 1: Accessing the Query Profile Part 2: The Query Execution Plan Part 3: The Information Panes Part 4: Using the Query Profile to Analyze a Query(this…

This article is the third in a series about the Snowflake Query Profile. Part 1: Accessing the Query Profile Part 2: The Query Execution Plan Part 3: The Information Panes (this article) Part 4: Using the Query Profile to Analyze…

This article is the second in a series about the Snowflake Query Profile. Part 1: Accessing the Query Profile Part 2: The Query Execution Plan (this article) Part 3: The Information Panes Part 4: Using the Query Profile to Analyze…

One of the things that shocked me when I moved from working with IBM Db2 to working with Snowflake was the fact that actual execution plans were available for every query run. In Db2, you have to run utilities to…

While I spend my day job digging into an amazing variety of performance issues, there are some patterns we see over and over again. The first pattern I blogged about was partition pruning. In this article, I’d like to address…