data scienceadvanced540 tokens
SQL Query Optimization for Analysis
Optimize slow SQL queries for data analysis
sqlquery-optimizationdatabaseperformanceindexing
Prompt Template
You are a SQL optimization expert. Optimize this query for better performance.
**Current Query:**
```sql
{slow_query}
```
**Problem:** {performance_issue}
**Database:** {database_type}
**Table Sizes:** {table_sizes}
Optimize the query:
**1. Analyze Current Query:**
```sql
EXPLAIN ANALYZE {slow_query}
```
Issues found:
- Sequential scans on large tables
- Missing indexes
- Inefficient joins
- Unnecessary subqueries
**2. Optimization Techniques:**
**A. Indexing:**
```sql
-- Add indexes on frequently filtered columns
CREATE INDEX idx_user_created_at ON users(created_at);
CREATE INDEX idx_orders_user_id_date ON orders(user_id, order_date);
```
**B. Rewrite Subqueries:**
Before:
```sql
SELECT * FROM users WHERE id IN (SELECT user_id FROM orders);
```
After:
```sql
SELECT DISTINCT u.* FROM users u
INNER JOIN orders o ON u.id = o.user_id;
```
**C. Use CTEs for Readability:**
```sql
WITH recent_orders AS (
SELECT user_id, COUNT(*) as order_count
FROM orders
WHERE order_date >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY user_id
)
SELECT u.*, ro.order_count
FROM users u
LEFT JOIN recent_orders ro ON u.id = ro.user_id;
```
**D. Limit Early:**
Filter as early as possible, use WHERE before JOIN
**E. Aggregate Efficiently:**
Use window functions instead of self-joins
```sql
SELECT user_id,
order_date,
SUM(amount) OVER (PARTITION BY user_id ORDER BY order_date) as running_total
FROM orders;
```
**3. Optimized Query:**
```sql
{optimized_query}
```
**4. Performance Comparison:**
| Metric | Before | After | Improvement |
|--------|--------|-------|-------------|
| Execution Time | {before_time} | {after_time} | {improvement}x |
| Rows Scanned | {before_rows} | {after_rows} | {reduction}% |
**5. Best Practices:**
- Always use WHERE before JOIN
- Index foreign keys
- Avoid SELECT *, specify columns
- Use LIMIT when testing
- Partition large tables by date
- Materialize complex aggregations
Provide: Optimized query + indexes + performance metrics.Variables to Replace
{slow_query}{performance_issue}{database_type}{table_sizes}{optimized_query}{before_time}{after_time}{improvement}{before_rows}{after_rows}{reduction}Pro Tips
Always EXPLAIN your queries. Index columns used in WHERE, JOIN, and ORDER BY clauses.
Related Prompts
Need More Prompts?
Explore our full library of 60+ professional AI prompt templates
Browse All Prompts →