The "Throw More Hardware at It" Fallacy
When a SaaS platform or ecommerce backend begins slowing down, the instinct of many engineering teams is simple: upgrade the server tier.
- Database running at 90% CPU on an AWS RDS
db.t3.medium? Upgrade todb.m5.large($140/mo). - Still lagging during peak afternoon traffic? Upgrade to
db.m5.2xlarge($560/mo). - Still encountering timeouts? Add multi-AZ read replicas ($1,200/mo).
Within six months, the company is spending over $1,800 every month on database infrastructure that is doing nothing more than repeatedly scanning millions of unindexed rows.
Here is the exact case study of how CodeByPluto rescued a client's database performance, reduced average query times from 1,420ms to 4ms, and slashed their monthly cloud bill by 60%.
1. Finding the Culprit: pg_stat_statements & EXPLAIN ANALYZE
Before changing any code, you must measure with scientific precision. We turned on PostgreSQL's query analytics to uncover the worst offenders:
SELECT
query,
calls,
total_exec_time / calls AS avg_time_ms,
rows / calls AS avg_rows
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 5;
The top culprit was a dashboard query filtering transactions by organization_id, status, and sorting by created_at:
EXPLAIN ANALYZE
SELECT * FROM transactions
WHERE organization_id = 'org_987'
AND status = 'COMPLETED'
ORDER BY created_at DESC
LIMIT 20;
The query plan revealed a horrifying execution strategy:
Seq Scan on transactions (cost=0.00..42310.40 rows=2800000 width=184)Execution Time: 1380.45 ms
PostgreSQL was reading nearly 3 million rows from disk on every single dashboard page load!
2. The Solution: A Targeted Composite B-Tree Index
Instead of upgrading the database, we created an index that mirrors the exact query filter and sort order:
CREATE INDEX CONCURRENTLY idx_transactions_org_status_created
ON transactions (organization_id, status, created_at DESC);
We re-ran EXPLAIN ANALYZE:
Index Scan using idx_transactions_org_status_createdExecution Time: 3.82 ms
That is a 99.7% reduction in query latency, accomplished in under five minutes with zero downtime.
3. Right-Sizing the Cloud Fleet
With the sequential scans eliminated, CPU utilization dropped from 94% to 11%.
We were able to downgrade the client's RDS instance from an expensive memory-heavy tier back to a lean, cost-efficient configuration with PgBouncer connection pooling.
Results achieved:
- Monthly cloud bill: Dropped from $1,650/mo to $620/mo.
- User experience: Dashboards load instantaneously.
- Capacity: The platform can now handle 10x the traffic volume without breaking a sweat.
Stop Burning Money on Inefficient Cloud Infrastructure
Your database should be an engine of speed, not a financial drain. Let CodeByPluto audit your database schemas, indexing strategies, and cloud architectures.
// Key Clarifications
