Designing MySQL Database For Two Different User Types (Staff and Client)?
I think your problem is that you are focusing to much on performance. From the description it seems like the user table will be rather small (say, less than a million users). 

Instead you should focus on the functionality you want from the system. There are questions you should ask and design for such as:


Can a user be both client and staff?
Can a user be user for several companies?
Can a user have several adresses, say a business adress and a home adress?
Do you need to have "time based changes", say that a client should be made active (or inactive) at a future date?
Do you need to store change information (who and when information was changed)?
Will you need to support several different login schemas (say through facebook or using some kind of one-time-password)?


My take on this is that I would have one table describing a login user and a second table describing a users role. When a user has successfylly logen in I would check if the users has several roles, and the user would be required to select role: staff or user for one company. This would allow the login to be for one physical person, over time it could evolve to include OTP or challenge response or what is deemed necessary. The user would at any time have zero, one or more selectable roles. 

Edit (added): If the user has only one role, there is no need to show any selection. Even if a user has no role right now the system might allow changing adress, mail adress and so on. Role based might allow a user to be administrator for the users at one company. End edit.

In the role table I would have start and stop dates. If necessary from a performance view it would be possible to later add an "active" field but that would be an optimization which I would not add until necessary.