              when 1 then
                (SELECT top 1 LastAccessDate FROM [{databaseOwner}].[{objectQualifier}TopicReadTracking] y WHERE y.TopicID=c.TopicID AND y.UserID = @PageUserID)
              else ''	 end,
-        TotalRows = @post_totalrowsnumber,
+        TotalRows = @TotalRows,
         PageIndex = @PageIndex
     from
-        [{databaseOwner}].[{objectQualifier}Topic] c
+	    TopicIds ti
+        inner join [{databaseOwner}].[{objectQualifier}Topic] c on c.TopicID = ti.TopicID
         join [{databaseOwner}].[{objectQualifier}User] b on b.UserID=c.UserID
-        join [{databaseOwner}].[{objectQualifier}Forum] d on d.ForumID=c.ForumID
-        join [{databaseOwner}].[{objectQualifier}ActiveAccess] x  with(nolock) on x.ForumID=d.ForumID
+        join [{databaseOwner}].[{objectQualifier}Forum] d on d.ForumID=c.ForumID	  
         join [{databaseOwner}].[{objectQualifier}Category] cat on cat.CategoryID=d.CategoryID
-    where
-        c.LastPosted <= @firstselectposted and
-        x.UserID = @PageUserID and
-        CONVERT(int,x.ReadAccess) <> 0 and
-        cat.BoardID = @BoardID and
-        (@CategoryID is null or cat.CategoryID=@CategoryID) and
-        c.IsDeleted = 0
-        and	c.TopicMovedID is null
-    order by
-        c.LastPosted desc,
-        cat.SortOrder asc,
-        d.SortOrder asc,
-        d.Name asc,
-        c.Priority desc	
-
-        SET ROWCOUNT 0		
+    where ti.RowNum between @FirstSelectRowNumber and @LastSelectRowNumber
+		order by
+            RowNum ASC   	
     
 end
 GO

        (@CategoryID is null or cat.CategoryID=@CategoryID) and
        c.IsDeleted = 0
        and	c.TopicMovedID is null	

      select @PageIndex = @PageIndex+1;
      select @firstselectrownum = (@PageIndex - 1) * @PageSize + 1 
        -- find first selectedrowid 
   if (@firstselectrownum > 0)   
   set rowcount @firstselectrownum
   else
   -- should not be 0
   set rowcount 1
    
   select		
        @firstselectposted = c.LastPosted		
    from
            [{databaseOwner}].[{objectQualifier}Topic] c
        join [{databaseOwner}].[{objectQualifier}User] b on b.UserID=c.UserID
        join [{databaseOwner}].[{objectQualifier}Forum] d on d.ForumID=c.ForumID
        join [{databaseOwner}].[{objectQualifier}ActiveAccess] x  with(nolock) on x.ForumID=d.ForumID
        join [{databaseOwner}].[{objectQualifier}Category] cat on cat.CategoryID=d.CategoryID
    where
        (c.LastPosted between @SinceDate and @ToDate) and
        x.UserID = @PageUserID and
        CONVERT(int,x.ReadAccess) <> 0 and

        (@CategoryID is null or cat.CategoryID=@CategoryID) and
        c.IsDeleted = 0
        and	c.TopicMovedID is null	
	  )	  
	  select
		c.ForumID,
        c.TopicID,
        c.TopicMovedID,		
        c.Posted,
