Data Engineering

Snowflake Performance Tuning: 7 Wins We See Repeatedly in 2026 Audits

5 min read

After auditing 30+ Snowflake accounts in 2025–2026, the same seven optimization patterns keep appearing. Each is worth 10–40% on the bill, individually. Together they routinely produce 50%+ savings.

The 7 Wins

  1. 01Right-size warehouses

    Most warehouses are 2–4x larger than necessary. Use WAREHOUSE_LOAD_HISTORY to find ones running at < 30% utilization.

  2. 02Tune auto-suspend (60s default is wrong)

    Heavy transactional warehouses: 30s. BI dashboards: 60–120s. Batch ETL: 600s.

  3. 03Use clustering keys on large tables

    Threshold: tables > 1TB with skewed query patterns. Monitor SYSTEM$CLUSTERING_INFORMATION.

  4. 04Fix expensive joins with materialized views

    Identify via QUERY_HISTORY; create MVs for the top 5 slow recurring joins.

  5. 05Set query timeouts at the warehouse level

    Stops runaway queries from burning credits silently. Set per-role.

  6. 06Use <code>RESOURCE_MONITORS</code> aggressively

    One per business unit. Notify at 80%, suspend at 100%.

  7. 07Adopt <code>SEARCH_OPTIMIZATION_SERVICE</code> selectively

    Massive for point-lookup queries on large tables. Costly otherwise — measure before turning on.

5-Lever FinOps FrameworkFrom audit to optimization — week-by-week01RightsizingEC2 + RDSnWeek 1–202CommitmentsSavings PlansnWeek 303Idle AuditEBS, EIPs, NATnWeek 3–404Data TransferVPC EndpointsnWeek 5–705Cost AllocationPer-customernWeek 8–10Result: 38% cost reduction · $420K annualized savings · 99.97% uptimeReal engagement · B2B SaaS · 90 days
The 5-lever framework Ohveda used to cut a B2B SaaS client’s AWS bill by 38% in 90 days.

Audit SQL — Top Offenders Query

-- Top 20 most expensive queries in the last 7 days
SELECT
  query_id,
  user_name,
  warehouse_name,
  warehouse_size,
  total_elapsed_time / 1000   AS elapsed_seconds,
  credits_used_cloud_services AS cloud_services_credits,
  ROUND(total_elapsed_time / 1000 / 3600
        * CASE warehouse_size
            WHEN 'X-Small' THEN 1
            WHEN 'Small'   THEN 2
            WHEN 'Medium'  THEN 4
            WHEN 'Large'   THEN 8
            WHEN 'X-Large' THEN 16
            ELSE 32
          END, 2) AS estimated_credits,
  LEFT(query_text, 120)        AS query_preview
FROM snowflake.account_usage.query_history
WHERE start_time >= DATEADD('day', -7, CURRENT_TIMESTAMP())
ORDER BY estimated_credits DESC
LIMIT 20;

Ready to optimize your cloud or AI footprint?

Book a free 30-minute architecture review. We will deliver a written cost-and-architecture audit within 48 hours.

Book a free architecture review · sales@ohveda.com

Need help with Snowflake performance tuning?

Ohveda runs free 30-minute architecture reviews. We will identify your top opportunities in writing within 48 hours — at no cost.

Book a Free Architecture Review →