Adding a new column is never just about schema. It’s an operation that touches storage, indexing, queries, and the way the application reads or writes data. Done right, it expands capability. Done wrong, it slows performance, breaks dependencies, and burns deploy time.
The first choice is where to define it. In SQL databases, ALTER TABLE ... ADD COLUMN is fast in some engines and dangerous in others. Some databases copy the whole table on write. Others, like PostgreSQL for nullable columns with defaults, skip the rewrite entirely. Understand your engine before you run the command.
Defaults are next. Adding a NOT NULL column with a default may lock the table for the duration of the write. On large datasets, that can block reads and writes. Many teams avoid this by adding the column nullable, backfilling in batches, then enforcing constraints later.
Indexing changes the game again. Adding an index for the new column can accelerate reads but will slow inserts and updates. Build the index after the data is populated, and consider partial or conditional indexes if the column is sparse.