db_query performance
Install entitycache - it will load the nodes quickly from a persistent cache ( e.g memcache, but db ok )
Use EntityFieldQuery to fetch the relevant nodes.


e.g:

  // Get published articles created in last 7 days.
  $query = new EntityFieldQuery();
  $query-&gt;entityCondition('entity_type', 'node')
        -&gt;entityCondition('bundle', 'article')
        -&gt;propertyCondition('status', 1)
        -&gt;propertyCondition('created', strtotime('-7 days', REQUEST_TIME), '&gt;');
  $result = $query-&gt;execute();
  if(!empty($result['node'])){
    // These will be loaded from entitycache
    $nodes = node_load_multiple(array_keys($result['node']));
    // Process result nodes
    foreach($nodes as $node){
      // Do stuff
    }
  }