【发布时间】:2013-04-10 19:22:30
【问题描述】:
我有这个代码
ALTER PROCEDURE [dbo].[Model_Core_BlogPost_GetLatestPaging]
@PageSize INT,
@CurrentPage INT
AS
BEGIN
DECLARE @PageStart int, @PageEnd int
SET @PageStart = @CurrentPage * @PageSize
set @PageEnd = @PageStart + @PageSize
;with C as (
SELECT
e.blogpostid,
e.PreviewText,
e.Headline,
e.URLHeadline,
u.Blogname,
u.imageurl AS ImageURL,
e.CommentsCount,
e.HitsCount,
e.Created,
ROW_NUMBER() over (order by e.created desc) as rownum
FROM BlogPosts e
INNER JOIN Users u ON e.BlogUserID = u.UserID
WHERE e.[Status] = 1 and e.Deleteddate is null
)
SELECT *
FROM C
WHERE rownum > @pagestart
AND rownum <= @pageend
END
当@CurrentPage 很大时我会遇到问题,并且我的应用程序中经常出现 sql 超时。
有什么解决方案的想法吗?
【问题讨论】:
-
请发布您的执行计划
-
您能否提供与博客帖子和用户相关的任何内容的架构信息?我猜你可以添加一个索引来帮忙。
-
我已经在 where 子句中添加了索引。当页面数量较多时,开发另一个SP来运行会更好吗?
标签: sql-server tsql paging