diff -r 005ea97b5200 webform.module
--- a/webform.module	Tue Dec 09 12:09:20 2008 +0300
+++ b/webform.module	Mon Dec 22 13:45:23 2008 +0300
@@ -2019,14 +2019,14 @@
     case 'clear' :
       return drupal_get_form('webform_results_clear_form', $node);
     case 'table':
-      return webform_results_table($node);
+      return webform_results_table($node, 50);
     case 'download' :
       return drupal_get_form('webform_results_download_form', $node);
     case 'user_submissions':
       return webform_results_submissions($node, TRUE);
     case 'submissions':
     default :
-      return webform_results_submissions($node);
+      return webform_results_submissions($node, FALSE, 50);
       break;
   }
 }
diff -r 005ea97b5200 webform_report.inc
--- a/webform_report.inc	Tue Dec 09 12:09:20 2008 +0300
+++ b/webform_report.inc	Mon Dec 22 13:45:23 2008 +0300
@@ -12,18 +12,18 @@
 /**
  * Retrieve lists of submissions for a given webform.
  */
-function webform_results_submissions($node, $user_filter = FALSE) {
+function webform_results_submissions($node, $user_filter = FALSE, $pager_count = 0) {
   global $user;
 
   $header = theme('webform_results_submissions_header', $node);
   if ($user_filter) {
     drupal_set_title(t('Submissions for %user', array('%user' => $user->name)));
-    $submissions = webform_get_submissions($node->nid, $header, $user->uid);
+    $submissions = webform_get_submissions($node->nid, $header, $user->uid, $pager_count);
   }
   else {
-    $submissions = webform_get_submissions($node->nid, $header);
+    $submissions = webform_get_submissions($node->nid, $header, NULL, $pager_count);
   }
-  return theme('webform_results_submissions', $node, $submissions);
+  return theme('webform_results_submissions', $node, $submissions, $pager_count);
 }
 
 /**
@@ -54,7 +54,7 @@
  * @param $submissions
  *   An array of all submissions for this webform.
  */
-function theme_webform_results_submissions($node, $submissions) {
+function theme_webform_results_submissions($node, $submissions, $pager_count = 0) {
   global $user;
   // This header has to be generated seperately so we can add the SQL necessary
   // to sort the results.
@@ -89,21 +89,28 @@
   if (arg(2) == 'submissions') {
     $output .= theme('links', array('webform' => array('title' => t('Go back to the form'), 'href' => 'node/'. $node->nid)));
   }
+  if ($pager_count) {
+    $output .= theme('pager', NULL, $pager_count, 0);
+  }
   return $output;
 }
 
 /**
  * Create a table containing all submitted values for a webform node.
  */
-function webform_results_table($node) {
+function webform_results_table($node, $pager_count = 0) {
   // Load Components.
   webform_load_components();
 
   // Get all the submissions for the node.
   $header = theme('webform_results_table_header', $node);
-  $submissions = webform_get_submissions($node->nid, $header);
+  $submissions = webform_get_submissions($node->nid, $header, NULL, $pager_count);
 
-  return theme('webform_results_table', $node, $node->webform['components'], $submissions);
+  $output = theme('webform_results_table', $node, $node->webform['components'], $submissions);
+  if ($pager_count) {
+    $output .= theme('pager', NULL, $pager_count, 0);
+  }
+  return $output;
 }
 
 function theme_webform_results_table_header($node) {
diff -r 005ea97b5200 webform_submissions.inc
--- a/webform_submissions.inc	Tue Dec 09 12:09:20 2008 +0300
+++ b/webform_submissions.inc	Mon Dec 22 13:45:23 2008 +0300
@@ -136,12 +136,30 @@
  * @return $submissions
  *   An array of submissions matching your filters.
  */
-function webform_get_submissions($nid, $header = NULL, $uid = NULL) {
+function webform_get_submissions($nid, $header = NULL, $uid = NULL, $pager_count = 0) {
+  $sids = NULL;
+  if ($pager_count) {
+    $pager_query = 'SELECT * FROM {webform_submissions} WHERE nid = %d';
+    if ($uid) {
+      $pager_query .= ' AND u.uid = %d';
+    }
+    $res = pager_query($pager_query, $pager_count, 0, NULL, $nid, $uid);
+    $sids = array();
+    while ($row = db_fetch_object($res)) {
+      $sids[] = $row->sid;
+    }
+    $sids = implode($sids, ',');
+  }
+
   $query = 'SELECT s.*, sd.cid, sd.no, sd.data, u.name, u.mail, u.status '.
            'FROM {webform_submissions} s '.
            'LEFT JOIN {webform_submitted_data} sd ON sd.sid = s.sid '.
            'LEFT JOIN {users} u ON u.uid = s.uid '.
            'WHERE sd.nid = %d';
+
+  if ($pager_count) {
+    $query .= ' AND s.sid IN (%s)';
+  }
 
   if ($uid) {
     $query .= ' AND u.uid = %d';
@@ -158,7 +176,7 @@
     $query .= ' ORDER BY sid ASC, cid ASC, no ASC';
   }
 
-  $res = db_query($query, $nid, $uid);
+  $res = db_query($query, $nid, $sids, $uid);
   $submissions = array();
   $previous = array();
 
