db query to get fields related to entry
I wonder about efficiency.


You're right to worry.  Doing this from PHP (even if you break it up into multiple SQL queries to get the data you need) is going to be much faster and less resource intensive than doing it from Twig.

One thing I'd look at though, instead of querying data directly against the database, is to see if you can get what you need going through Craft's services in craft/app/services/.

That way you don't have to worry about your plugin breaking in the event that the underlying database structure changes during an update.