--- name: bigquery-sql metadata: version: v1 description: >- Provides BigQuery SQL query optimization techniques, execution best practices, and performance tuning rules for high-efficiency querying. Use when optimizing BigQuery SQL queries, reducing query costs, or designing performant SQL transformations. --- # BigQuery SQL Optimization Performance and efficiency guidelines for BigQuery SQL queries. Includes rules for column pruning, predicate pushdown, join optimization, and materialization strategies. ## SQL Optimization Rules > [!TIP] Always include a **"Summary of Optimizations"** section listing only > the optimizations applied. ### Always Apply (Automatic) - **Column Pruning**: Remove unnecessary columns from all query stages. - **Common Subexpression Reuse**: Factor out identical expressions to avoid redundant computation. - **Predicate Pushdown**: Apply `WHERE` filters as early as possible. - **Early Aggregation**: Perform `GROUP BY` before joins when possible. - **Intermediate Materialization**: Choose `VIEW` vs `TABLE` for intermediate nodes based on efficiency. #### Intermediate Node Strategy - **`VIEW`**: Small datasets or simple transformations. - **`TABLE`**: Large datasets, expensive computations, or nodes reused multiple times. ### Always Rewrite (Mandatory) - **`WHERE IN (SELECT ...)`**: Replace With `WHERE EXISTS (SELECT 1 FROM ...)` - **`WHERE (SELECT COUNT(*) ...) > 0`**: Replace With `WHERE EXISTS (SELECT 1 FROM ...)` ### Propose with Confirmation (Conditional) - **`UNION` → `UNION ALL`**: Faster (skips deduplication), but permits duplicate rows. - **`COUNT(DISTINCT)` → `APPROX_COUNT_DISTINCT`**: Faster and lower memory, but approximate.