First, you have to think about what you want:
superfast code, or code that you understand and that you can easily expand/change/port.
I'd allways go for the second option.
What really helps for speed is minimizing the number of queries you run.
One time "SELECT *" may be faster that two times "SELECT field"
Plus, your database server will cache queries to give you fast answers.
The fewer different queries you have, the more likely it is that you'll use a cached query.
You should only avoid "SELECT *" if you have BLOB columns that you don't really need at that time.
What really helps (but which is also quite complex) is using objects.
You'd create an object for each 'entity' in your database.
For example a 'user' object for example.
This object would then contain functions for reading the data from the table, for writing the data back to the table, and for updating the data in the table.
This does mean that all data for an entity is read/written every time, but you only need to get and write everything once, which is what counts.