Retrieve a field value without loading the entire node? I have a large number of NIDs and I need one field value from each node. Is there any way to avoid the overhead of loading the entire node to get one field value?
I don't think there's anything built in to the API but in a pinch you could just query the database directly:

$entity_type = 'node';
$bundle = 'page';
$nids = array(1, 2, 3);

$field_values = db_select('field_revision_FIELD_NAME', 'f')
  -&gt;fields('f', array('entity_id', 'FIELD_NAME_value'))
  -&gt;condition('entity_type', $entity_type)
  -&gt;condition('bundle', $bundle)
  -&gt;condition('entity_id', $nids, 'IN')
  -&gt;condition('deleted', 0)
  -&gt;execute()
  -&gt;fetchAllKeyed();


After running that you should have an array of field values, keyed by their respective node's nid.

It's worth remembering the column name won't necessarily be FIELD_NAME_value; for example a node reference field would have a column name of FIELD_NAME_nid. Which one you use will depend on your field type.

UPDATE

It seems there is a way to do it with the API, but it's not pretty and still involves a manual query:

// Get the field meta data for the field_id.
$field_name = 'field_something';
$field_info = field_info_field($field_name);
$field_id = $field_info['id'];

// Load up the properties from the node table.
$nids = array(1, 2, 3);
$sql = 'SELECT * FROM {node} WHERE nid IN (:nids)';
$nodes = db_query($sql, array(':nids' =&gt; $nids))-&gt;fetchAllAssoc('nid');

// Attach the single field to all nodes.
field_attach_load('node', $nodes, FIELD_LOAD_CURRENT, array('field_id' =&gt; $field_id));


That method takes advantage of the $options parameter in field_attach_load() by specifying a field ID to load data for. It's worth noting, per the docs:


  Note that returned entities may contain data for other fields, for example if they are read from a cache.


So the code might have appeared to load extra field data, but anything other than the field you've specified will come from cache.