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!

Back to Blog

Related posts

Read more »