When you add a new column to a database table, you add complexity: to the schema, the queries, the indexes, and the code that touches them. Each new column must be designed with purpose. Is it nullable? Does it require a default value? Will it break existing queries that use SELECT * in production?
Performance is another concern. In large datasets, adding a column can lock a table, impact query planning, and influence how indexes are used. Data types must be chosen for accuracy and size. Booleans, integers, and timestamps store differently; choose the wrong type and pay the cost at scale.
Schema migrations must be safe. Zero-downtime strategies involve creating the column first, backfilling data in batches, and only then adding constraints. Always test migrations against real production snapshots. Watch for ORM-generated SQL that does more than expected.