How to select fields from content type
I think choice is in between EntityQuery and db_select and EntityQuery seems to be a better choice for Entities as it takes care of joining different fields for you.

Reference Link: EntityFieldQuery vs Db_select() -

@Bart says: - 


  I think that the main reason prefering EntityFieldQuery over db_select
  is that you don't have to know about the lower-level structure, in
  other words: how stuff is stored in the database. This improves loose
  coupling.


@Berdir comment:- 


  This is correct, although it goes even further. The field storage is
  pluggable. The default implementation stores field data in a separate
  table per field in the database, but it can be replaced, there is for
  example an implementation which allows to store field data in MongoDB.
  If you want your code to be portable and not just work on your
  specific site configuration, you must use EntityFieldQuery.