Database Optimization

22. Database Optimization: Performance at Scale


Even the most powerful database hardware will collapse under a high-concurrency load if the data model is poorly structured or if queries are forced to scan millions of rows to find a single record. Database optimization is the science of balancing data integrity (via normalization) with retrieval performance (via indexing and denormalization).


1. Normalization: Integrity & Redundancy Reduction

Normalization is the process of organizing data to minimize redundancy and dependency. It involves dividing large tables into smaller, related tables and defining relationships between them.

  • The Process: Usually applied up to the "Third Normal Form" (3NF).

    • 1NF: Eliminate repeating groups; ensure atomicity (each cell contains a single value).

    • 2NF: Eliminate partial dependencies (all non-key attributes must depend on the entire primary key).

    • 3NF: Eliminate transitive dependencies (non-key attributes should not depend on other non-key attributes).

  • The Benefit: Reduces "data anomalies." If you need to update a user's address, you update it in one place, and it propagates across the system automatically because all tables reference the unique user_id.

  • The Cost: Excessive normalization forces the database to perform complex JOIN operations across many tables to reconstruct simple data views, which is computationally expensive at high scale.


2. Denormalization: Optimizing for Read Speed


Denormalization is the strategic, intentional introduction of redundancy into a database schema. It is the direct opposite of normalization.

  • The Mechanism: You intentionally store redundant data (e.g., storing the user_name inside the posts table rather than just a user_id) to eliminate the need for JOIN operations.

  • Production Use Case: High-traffic systems where "Read" performance is significantly more critical than "Write" performance.

  • The Trade-off: You gain massive speed in data retrieval, but you introduce a significant risk of data inconsistency. If a user changes their name, you must now run an application-level update across every post they have ever written.


3. Indexing: The Database Map


An Index is a specialized data structure (typically a B-Tree) that allows the database engine to find specific rows without scanning the entire table.

  • How it Works: Without an index, the database performs a "Full Table Scan"—looking at every single row from start to finish. With an index, the database traverses a balanced tree structure to find the pointer to the exact row location in $O(\log n)$ time.

  • Production Guardrails:

    • Don't Over-Index: Every index you add must be updated every time you perform an INSERT, UPDATE, or DELETE. Too many indexes will cripple your write performance.

    • Index the Right Columns: Only index columns used in WHERE, JOIN, or ORDER BY clauses.


4. Query Optimization: Refining the Execution


Even with a perfect schema, poorly written queries will bypass your indexes and force the database into slow execution paths.

Core Optimization Techniques

  • Avoid SELECT *: Only request the specific columns you need. Transferring massive, unused blobs over the network wastes bandwidth and database CPU cycles.

  • SARGable Queries (Search ARGumentable): Write your WHERE clauses in a way that allows the database to utilize indexes.

    • Bad (Non-SARGable): WHERE YEAR(created_at) = 2026 (The database must calculate the function for every row).

    • Good (SARGable): WHERE created_at >= '2026-01-01' AND created_at < '2027-01-01' (The database can use an index range scan).

  • Use EXPLAIN Plans: Every major database (PostgreSQL, MySQL) provides an EXPLAIN or EXPLAIN ANALYZE command. This tells you exactly how the database engine plans to execute your query—identifying if it's performing a "Full Table Scan" or effectively using an index.


Database Optimization Reference Matrix

TechniquePrimary FocusBest ForTrade-off
NormalizationData IntegrityComplex relational data, financial appsSlower read performance due to joins.
DenormalizationRead SpeedHigh-traffic, read-heavy dashboardsRisk of data inconsistency.
IndexingSearch EfficiencySearching, filtering, sortingSlower write performance.
Query TuningExecution EfficiencyRemoving bottlenecksRequires developer expertise.
Database Optimization in System Architecture · medium | System Architecture | Careeroza