Creating a new column in a production database is not just an ALTER TABLE statement. It is a deliberate act. Storage layouts must adapt. Indexes shift. Queries gain or lose speed. A mistimed migration can spike CPU or lock critical tables.
Start by defining the exact type. Will this column hold text, integers, or JSON? Consider nullability. Adding NOT NULL with a default value avoids rewriting rows one by one, but it changes migration behavior. For large datasets, add the column as nullable first, backfill in controlled batches, and then enforce constraints.
Plan indexing early. A new column without an index is often invisible to the query planner. But adding an index too soon can stall writes. Create indexes after you have populated and validated the data. Monitor slow query logs before and after the change.