sql数据库存储过程分页
来源:互联网 发布:公主坟it就业培训 编辑:程序博客网 时间:2024/05/22 14:32
以前用到数据库存储过程分页的时候都是用 not in
但是最近工作的时候,随着数据库记录的不断增大,发现not in的效率 真的不行
虽然都设置了索引,但是当记录达到10w的时候就发现不行了,都是需要好几秒钟,受不了了
所以就想换个方法,直接找到需要的页面的数据库记录的第一个ID,当然这个id是有索引,唯一的
而且是主键,这个也是网上说到的最快的一个方法 ^_^,据说比游标更快(我没用过游标)
CREATE PROCEDURE sp_Image_List_ByCategoryID3
(
@rowscount int =0 output,
@categoryid int,
@currentpage int =1,
@pagesize int = 20
)
AS
DECLARE @SQL nvarchar(2000)
SET @SQL = ''
SELECT @rowscount=count(ImageID) FROM T_Images WHERE CategoryID=@categoryid
IF @currentpage = 1
SET @SQL = @SQL + 'SELECT Top ' + cast(@PageSize as nvarchar(20)) + ' ImageID,ThumbName,ImageCode,BigCategoryid FROM T_Images WHERE CateGoryID=' + CAST(@categoryid AS VARCHAR(10))+' ORDER BY Imageid DESC '
ELSE
BEGIN
DECLARE @Num int
SET @Num = @PageSize * (@currentpage - 1)
SET @SQL = @SQL + 'DECLARE @LastID NVARCHAR(100)' + char(13)
SET @SQL = @SQL + 'SELECT Top ' + cast(@Num as nvarchar(20)) + ' @LastID= ImageID FROM T_Images WHERE CateGoryID=' + CAST(@categoryid AS VARCHAR(10))+' ORDER BY Imageid DESC ' + char(13)
SET @SQL = @SQL + 'SELECT Top ' + cast(@PageSize as nvarchar(20)) + ' ImageID,ThumbName,ImageCode,BigCategoryid FROM T_Images WHERE CateGoryID=' + CAST(@categoryid AS VARCHAR(10))+' AND ImageID < @LastID ORDER BY Imageid DESC '
END
EXECUTE sp_executesql @SQL
GO
换了这个存储过程过程后,发现真的快了很多,现在的数据是40w,就是检索最后一页,都只需要100多ms,爽多了,ImageID上面做了 联合索引 呵呵
转自:http://joyjoe.bokee.com/2261333.html
- sql数据库存储过程分页
- sql server数据库的分页存储过程
- 我的sql数据库存储过程分页- -
- sql 存储过程分页
- sql 存储过程分页
- sql分页存储过程
- sql分页存储过程
- sql 存储过程分页
- sql 存储过程分页
- SQL 存储过程---分页
- 分页存储过程--sql
- sql存储过程 分页
- sql 存储过程分页
- SQL 分页存储过程
- SQL分页存储过程
- sql分页存储过程
- SQL分页存储过程
- sql分页存储过程
- 企业软件定制开发的成功途径
- 手写MFC----第一节DECLARE_DYNCREATE(mydoc)[转载]
- 使用内部和匿名类优化Java代码
- ogre+mfc
- 一些常用网站地址
- sql数据库存储过程分页
- IE窗口始终最小化的问题
- 什么才是软件开发的葵花宝典?
- 你知道的Java和你不知道的Java(转载)
- Apache 中 KeepAlive 配置的合理使用
- Java验证码资料精粹(转载)
- 编程的境界
- 微软已经公开旧的Office文档格式技术细节
- 一个带刻度的CProcessCtrl