On “we don’t need these users—let’s move them to an archive table!”

For one of the customers I currently work for, when we first designed the platform in Q1/2000, there was the "account" table, there we stored our users. There were always various pressures to move "inactive" users to a separate "archive" table. I was always against this decision.

In Q4/2005, during a period of my absence, it was decided to implement this decision. A bunch of users were to be deleted, but "not quite", in case we needed their data again. Their data was to be moved from the "account" table to an "account_archive" table.

This was really the worst decision ever made. I said that before, and now I see the consequences. I want anyone who considers such an operation good, to understand the consequences. So I list them here.

It would have been necessary to decide on one of the two courses of action:

It has been said that removing users from account "increases performance". However:

Splitting a table up into two tables, for "performance", or whatever reason, is never a good thing to do. Add a status flag.

P.S. I recently created a nerdy privacy-respecting tool called When Will I Run Out Of Money? It's available for free if you want to check it out.

This article is © Adrian Smith.
It was originally published on 29 Mar 2007
More on: Databases | Software Architecture | Operations & Servers