5 Database Query Optimization Tips That Actually Work

Published: (December 10, 2025 at 08:55 PM EST)
2 min read
Source: Dev.to

Source: Dev.to

After years of managing database‑driven applications, I’ve learned that query optimization can make or break your application’s performance. Here are five practical tips I use regularly.

1. Index foreign keys

Every foreign key should have an index:

CREATE INDEX idx_user_id ON orders(user_id);

Without proper indexing, JOIN operations become painfully slow as your tables grow.

2. Use EXPLAIN to understand what’s happening

Run EXPLAIN on your queries to see how MySQL executes them:

EXPLAIN SELECT * FROM products WHERE category_id = 5;

Look for:

  • Table scans (bad)
  • Index usage (good)
  • Rows examined vs. rows returned

3. Select only the columns you need

Fetching unnecessary columns wastes memory and bandwidth.

// Bad
$query = "SELECT * FROM users";

// Good
$query = "SELECT id, name, email FROM users";

4. Reuse connections and batch inserts

Opening database connections is expensive; reuse them with persistent connections:

// Use persistent connections in PHP
$pdo = new PDO($dsn, $user, $pass, [
    PDO::ATTR_PERSISTENT => true
]);

Batch multiple inserts instead of inserting rows one by one:

// Instead of this
foreach ($items as $item) {
    $db->insert($item);
}

// Do this
$db->insertBatch($items);

This can speed up bulk operations by 10–100×.

5. Enable MySQL’s slow query log

Capture queries that exceed a threshold for later analysis:

SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2;

Any query taking longer than 2 seconds will be logged.

Database optimization is an ongoing process. Start with these fundamentals, measure your results, and iterate. Your users will thank you for the faster response times!

0 views
Back to Blog

Related posts

Read more »

Vacuum Is a Lie: About Your Indexes

Article URL: https://boringsql.com/posts/vacuum-is-lie/ Comments URL: https://news.ycombinator.com/item?id=46262777 Points: 11 Comments: 4...