我的sql数据库存储过程分页- -
以前用到数据库存储过程分页的时候都是用 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上面做了 联合索引 呵呵
我的sql数据库存储过程分页- -的更多相关文章
- Sql Service存储过程分页
一起是用oracle数据库..感觉oracle数据库强大.查询速度是杠杠的.换了家公司用的是SQL SERVICE.以前用了1年现在捡回以前的记忆.动手写了动态SQL过存储过程分页.感觉和oracle ...
- SQL Server 存储过程 分页查询
Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. Ø ...
- sql 高性能存储过程分页
USE [Lyjjr] GO /****** Object: StoredProcedure [dbo].[P_ViewPage] Script Date: 05/29/2015 17:18:56 * ...
- SQL Server 存储过程分页
每每面试,总会有公司问到分页.在下不才,在这里写几种分页,望路过的各位大神尽情拍砖. 先从创建数据库说起.源码如下 一.创建数据库 /********************************* ...
- SQL 数据库 存储过程 视图
一.存储过程 1.概述 存储过程是一组编译在单个执行计划中的T-SQL语句 存储过程:就像函数一样的会保存在数据库中(可编程性) 存储过程的优点: 1.允许模块化程序设计 2.允许更快执行如果某操作需 ...
- SQL数据库存储过程
添加修改 create PROCEDURE sp_insert_1(pid int,pname varchar(200),page varchar(200),pscore int,out code i ...
- oracle数据库存储过程分页
CREATE OR REPLACE PROCEDURE prc_query (p_tableName in varchar2, --表名 p_columnNames in varchar2, --字段 ...
- sql server存储过程分页,行变列
CREATE PROCEDURE [dbo].[PROC_GetPriviousAndNextDetailContent]@Index varchar(20),--表主键@Table varchar( ...
- sql server存储过程分页
Create PROCEDURE [dbo].[Table_GetList] ) = '', -- 查询条件(注意: 不要加 WHERE) ) = '', -- 设置排序 , -- 页尺寸 , -- ...
随机推荐
- Shell在大数据时代的魅力:从一道百度大数据面试题想到的点滴
对于在Linux下开发的同学来说,Shell可以说是一种基本功. 对于运维的同学来说,Shell可以说是一种必备的技能,而且应该要非常熟练的书写Shell.对于Release Team,软件配置管理的 ...
- Dynamics CRM 2015Online Update1 new feature之 插件跟踪日志
在最新的CRM2015Online Update1版本中加入了一个新功能-插件跟踪日志,与其说是新功能更应该说是对原有功能的加强,因为ITracingService这个接口在2013中已经引入了, ...
- 定义范围中的备选方案生成、横向思维、创建WBS、工作包定义、WBS、确认范围过程和实施质量过程的关系、联合应用设计和质量功能展开QFD
- android分包方案
当一个app的功能越来越复杂,代码量越来越多,也许有一天便会突然遇到下列现象: 1. 生成的apk在2.3以前的机器无法安装,提示INSTALL_FAILED_DEXOPT 2. 方法数量过多,编译时 ...
- findbugs, checkstyle, pmd的myeclipse7.5+插件安装(转:http://blog.csdn.net/priestmoon/article/details/63941)
CheckStyle (1)下载net.sf.eclipsecs_5.3.0.201012121300-updatesite-.zip (2)打开MyEclipse,Help->Software ...
- 《java入门第一季》之网络编程初探
由于在写有关javaweb的博客,在写到web服务器的时候需要回顾网络编程的知识,提前把网络编程放在前面写. 直接上代码解释: import java.net.InetAddress; import ...
- 【OpenCV文档】用于角点检测的Fast算法
原文地址:http://docs.opencv.org/trunk/doc/py_tutorials/py_feature2d/py_fast/py_fast.html#fast-algorithm- ...
- JAVA之旅(十八)——基本数据类型的对象包装类,集合框架,数据结构,Collection,ArrayList,迭代器Iterator,List的使用
JAVA之旅(十八)--基本数据类型的对象包装类,集合框架,数据结构,Collection,ArrayList,迭代器Iterator,List的使用 JAVA把完事万物都定义为对象,而我们想使用数据 ...
- uploadify在火狐下上传不了的解决方案,java版(Spring+SpringMVC+MyBatis)详细解决方案
由于技术选型的原因,在一个产品中,我选择了uploadify,选择它的原因是它有完善的技术文档说明(http://www.uploadify.com/documentation/),唯一不足的是 ...
- Mahout 系列之--canopy 算法
Canopy 算法,流程简单,容易实现,一下是算法 (1)设样本集合为S,确定两个阈值t1和t2,且t1>t2. (2)任取一个样本点p属于S,作为一个Canopy,记为C,从S中移除p. (3 ...