Best recommendation I can give you on the database design is to read up on "database normalization". I suspect that 99% of the time, if it logically makes sense to have 100 columns in one table, your logic is flawed -- but there may well be an exception. But even if you do have 100 columns, if you only need 3 of them for a given purpose and only do SELECT col1, col23, col55 FROM... (instead of SELECT * FROM...), you should be okay from a performance standpoint (assuming all else is good, data is nomarlized, indexes are properly applied, etc.).
"Please give us a simple answer, so that we don't have to think, because if we think, we might find answers that don't fit the way we want the world to be."
~ Terry Pratchett in Nation