I have a question about performance of sql and how to design. Lets say you have a system wich surrounds around a user table. Each user has a lot of relations to other tables, like message, forumposts and that sort of things. Now for example lets say that we normally do a search on users by firstname, location, age and other fields in the user-table. That is not a big issue. The problem now is that if we want to implement a way for a user to inactivate his account. You could just create a bit-field and then always in the search-queries set that the active-field should be true. But lets say that after a few months/years you could imagine that the number of inactive users would grove and therefore the number of rows returned and needs to be removed after the query is executed is growing, which could result in bad performance. I have some ideas on how to solve this 1. Move all inactive users to a duplicated users_inactive-table. The same thing with the message, forumposts-table and all the others? 2. Split the table on two different physical places (different filegroups) (partitioned tables?)? 3. Keep everything as it is and just add the where active = 1 in my queries? 4. Create a copy of the whole db on a different filesystem and move all data when a users gets inactive. Any other suggestions?