The product team needed new data, fast. A new column had to be added, but it wasn’t just a column—it was the footprint of a feature, a change that could ripple through queries, indexes, APIs, and dashboards.
Adding a new column sounds simple. In practice, it’s a change to your contract with the database. Every migration risks breaking services, slowing reads, or causing write bottlenecks. Primary considerations include: column type selection, nullability, default values, indexing strategy, and backward compatibility for consumers of the data.
First, think hard about column data types. Stick to what the system handles efficiently and what matches the exact shape of the data. Choosing VARCHAR over TEXT or BIGINT over INT can determine query speed and storage overhead.
Then address nulls. Will the new column be nullable, or does it require a default? A poorly chosen default can mislead downstream services. A nullable column requires check logic in queries and application code to ensure no silent failures.