Course contentsShow
← Databases & SQL
Lesson 498 of 1,9535. Relational Schema ArchitectureFree lesson

Vertical Partitioning Strategies

Split rarely accessed columns into separate tables to improve core table read performance.

In this lesson, you will learn how to optimize database performance by splitting wide tables into smaller, more efficient structures based on column usage frequency.

The Problem: The "Wide Table" Bottleneck

In many relational databases, we often find ourselves adding column after column to a single table. Over time, this creates a "wide" table where a few core columns (like username and email) are accessed every millisecond, while others (like biography, profile_picture_blob, or audit_notes) are rarely queried.

When your database engine performs a SELECT * or scans the table, it must load the entire row from the disk into memory—including the "heavy" data you don't actually need. This wastes I/O bandwidth and hurts the performance of your most frequent queries.

The Strategy: Vertical Partitioning

Vertical partitioning is the process of splitting a table vertically (by columns) into two or more tables that share the same primary key. By moving rarely accessed, wide, or bulky columns into a separate "extension" table, your primary table becomes "lean."

Example

Imagine a Users table that has become bloated. We split it to improve read performance:

-- The Core Table: Frequently accessed columns stay here
CREATE TABLE Users (
    user_id INT PRIMARY KEY,
    username VARCHAR(50),
    email VARCHAR(100)
);

-- The Extension Table: Rarely accessed, heavy columns move here
CREATE TABLE User_Details (
    user_id INT PRIMARY KEY,
    biography TEXT,
    preferences_json JSON,
    FOREIGN KEY (user_id) REFERENCES Users(user_id)
);

By doing this, a query like SELECT username FROM Users now scans a much smaller, memory-efficient table. The User_Details data is only fetched via a JOIN when the application specifically requests it.

When to Use This

You should consider vertical partitioning when:

  1. Performance is degrading: Your primary table is so wide that it exceeds the page size of your database, causing excessive disk I/O.
  2. Usage patterns are skewed: You have a clear distinction between "hot" data used in nearly every request and "cold" data that is only accessed on specific profile pages.

Key Takeaway: Vertical partitioning boosts performance by isolating frequently accessed columns into a lean table, reducing the I/O cost of your most critical read operations.