Adding a new column looks simple. It’s not. A schema migration in production is one of the fastest ways to create hidden downtime, silent errors, and unpredictable performance drops. The wrong approach locks your table, stalls writes, and blocks queries at scale. The right approach finishes in seconds with zero impact.
A new column in SQL can be created with an ALTER TABLE statement. On small datasets, it’s instant. On large ones, it can trigger a full table rewrite. That rewrite can consume CPU, I/O, and memory in ways that ripple through the system. Before you run the change, you need to know if your database engine supports adding the column without rewriting existing rows.
For PostgreSQL, adding a nullable column with no default is fast because it updates only the metadata. Adding a NOT NULL column or a column with a default rewrites every row. For MySQL (InnoDB), the behavior depends on version—modern releases can add certain column changes instantly, but others still require a full table copy. In SQLite, most ALTER TABLE ADD COLUMN operations are simple, but constraints are limited.