Fetching specific node fields instead of whole nodes using EntityFieldQuery The standard for fetching specific nodes from the database in Drupal 7 goes something like this:

$query = new EntityFieldQuery();
$query-&gt;entityCondition('entity_type', 'node');
$query-&gt;entityCondition('bundle', 'page');
$query-&gt;fieldCondition('field_category', 'value', $category_id);

$result = $query-&gt;execute();
$nids = array_keys($result['node']);
$nodes = node_load_multiple($nids);


For better performance, is there any way to specify that I want to load only certain fields (the title for example) of the nodes instead of loading all their their fields?

I prefer a solution that doesn't use SQL to benefit from all the goodies Drupal functions offer (reliability, caching results, future proofed, ...).

Thank you.
No, there isn't. EFQ can only return the entity id's.

While there might be ways around it, there is a logical reason for that: Modules might alter the values of those fields in various hooks, there is no guarantee that the directly returned values are the same as when loading an entity.