Snowflake Query Cost Estimator

Estimate the cost of a single Snowflake query from bytes scanned, warehouse size, edition, and region. Includes the 60-second resume minimum and scales to daily and monthly totals.

How is query cost calculated in Snowflake?

Snowflake bills per second of warehouse uptime, not per query directly. The formula is: query_cost = (credits_per_hour x runtime_in_hours) x price_per_credit. An XS warehouse runs at 1 credit/hour; each size doubles. A 60-second minimum applies every time a warehouse resumes from auto-suspend, so a 2-second query on a freshly-resumed warehouse is billed as 60 seconds.

Why bytes scanned matters

Bytes scanned is the best predictor of runtime. Less pruning means more bytes scanned, which means longer runtime, which means higher cost. Three levers reduce bytes scanned: (1) clustering keys on high-cardinality filter columns, (2) Search Optimization Service for point lookups, and (3) materialized views for repeated aggregations.

How to find bytes scanned for your query

  1. Open Snowsight -> Activity -> Query History
  2. Click the query ID and view the Query Profile panel
  3. Read "Bytes scanned" from the TableScan nodes
  4. Or query: SELECT BYTES_SCANNED FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY WHERE QUERY_ID = '...'

Is a bigger warehouse more expensive per query?

Not necessarily. A 2XL that finishes in 10 seconds can cost the same as a Small that runs for 160 seconds. When queries spill to remote disk on smaller sizes, bumping up a size is often cheaper and faster. Use the Query Profile to check for spillage before deciding.

Related Tools

See the full cost calculator for full-workload estimation, the warehouse sizing estimator to pick the right size, and the credit converter for credit-to-USD lookups. Also see our guide on Snowflake query optimization.

← Back to Home