diff --git a/quiz.module b/quiz.module
index 6e4c2b68..ea7bea55 100644
--- a/quiz.module
+++ b/quiz.module
@@ -2973,6 +2973,7 @@ function _quiz_get_quizzes($uid = 0) {
  *   Array of answers.
  */
 function _quiz_get_answers($quiz, $result_id) {
+  static $question_nodes = array();
   $questions = array();
   $ids = db_query("SELECT question_nid, question_vid, n.type, rs.max_score, qt.max_score as term_max_score
                    FROM {quiz_node_results_answers} ra
@@ -2993,7 +2994,13 @@ function _quiz_get_answers($quiz, $result_id) {
     if (!$module) {
       continue;
     }
-    $question_node = node_load($line->question_nid, $line->question_vid);
+    if (isset($question_nodes[$line->question_nid . ':' . $line->question_vid])) {
+      $question_node = $question_nodes[$line->question_nid . ':' . $line->question_vid];
+    }
+    else {
+      $question_node = node_load($line->question_nid, $line->question_vid);
+      $question_nodes[$line->question_nid . ':' . $line->question_vid] = $question_node;
+    }
     $response = _quiz_question_response_get_instance($result_id, $question_node);
     $questions[$line->question_nid] = $response->question;
     // Add max score info to the question.
