Comparing query performance with and without indexes
| Scenario | SQL Query | POSTGRES No Index (ms) | POSTGRES With Index (ms) | Improvement | MYSQL No Index (ms) | MYSQL With Index (ms) | Improvement |
|---|---|---|---|---|---|---|---|
| aggregation | SELECT COUNT(*) as count FROM products WHERE category = ? | 15.38 | 12.62 | +17.9% | 17.44 | 15.75 | +9.7% |
| composite-filter | SELECT * FROM users WHERE country = ? AND status = ? LIMIT 100 | 12.27 | 17.78 | -44.9% | 22.31 | 19.78 | +11.3% |
| join-query | SELECT t.*, u.name as user_name, p.name as product_name FROM transactions t JOIN users u ON t.user_id = u.id JOIN products p ON t.product_id = p.id WHERE t.user_id = ? ORDER BY t.created_at DESC LIMIT 50 | 44.98 | 44.67 | +0.7% | 16.33 | 15.39 | +5.8% |
| pagination | SELECT * FROM transactions ORDER BY id LIMIT ? OFFSET ? | 15.60 | 17.16 | -10.0% | 17.52 | 16.83 | +3.9% |
| point-lookup | SELECT * FROM users WHERE email = ? | 10.42 | 11.79 | -13.2% | 14.61 | 10.93 | +25.1% |
| prefix-search | SELECT * FROM users WHERE name LIKE ? LIMIT 50 | 19.67 | 17.27 | +12.2% | 24.27 | 16.95 | +30.1% |
| range-query | SELECT * FROM users WHERE created_at BETWEEN ? AND ? LIMIT 100 | 14.06 | 18.17 | -29.2% | 59.22 | 21.96 | +62.9% |
| sorting | SELECT * FROM products ORDER BY price DESC LIMIT 20 | 13.11 | 14.04 | -7.1% | 19.54 | 13.34 | +31.8% |
| status-filter | SELECT * FROM transactions WHERE status = ? AND created_at BETWEEN ? AND ? ORDER BY created_at DESC LIMIT 100 | 34.77 | 18.84 | +45.8% | 1560.99 | 22.82 | +98.5% |