我的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) ) = '', -- 设置排序 , -- 页尺寸 , -- ...
随机推荐
- Dynamics CRM 2015Online Update1 new feature之 插件跟踪日志
在最新的CRM2015Online Update1版本中加入了一个新功能-插件跟踪日志,与其说是新功能更应该说是对原有功能的加强,因为ITracingService这个接口在2013中已经引入了, ...
- J2EE进阶(四)Spring配置文件详解
J2EE进阶(四)Spring配置文件详解 前言 Spring配置文件是用于指导Spring工厂进行Bean生产.依赖关系注入(装配)及Bean实例分发的"图纸".Java EE程 ...
- 1052. Linked List Sorting (25)
题目如下: A linked list consists of a series of structures, which are not necessarily adjacent in memory ...
- Eclipse中pydev开发,python重载__init__报错,是可以正常执行
python支持函数重载 而在使用Eclipse的pydev开发时,重载函数__init__时,却出现了错误duplicated 我想不到解决办法,但是居然能正常执行. pydev报错是编译错误,而p ...
- iOS开发基础block的形式讲解
前几个星期,我利用通知写了一个仿京东选择地址的Demo(http://blog.csdn.net/hbblzjy/article/details/52212879),后来看过一篇文章说,尽量少用通知, ...
- Uva - 816 - Abbott's Revenge
这个迷宫问题还是挺好玩的,多加了一个转向的问题,有些路口不同的进入方式会有不同的转向限制,这个会比较麻烦一点,所以定义结点结构体的时候需要加一个朝向dir.总体来说是一道BFS求最短路的问题.最后打印 ...
- NSDate-日期类 OC——第七天(1)
1.总结前面学习的Oc中的几种数据类型 NSInteger NSUinteger CGFloat NSString NSMutableString NSSArray NSMutableArray NS ...
- PCA与特征选取
一.什么是PCA PCA,即PrincipalComponents Analysis,也就是主成份分析: 通俗的讲,就是寻找一系列的投影方向,高维数据按照这些方向投影后其方差最大化(方差最大的即是第一 ...
- python面向对象小练习
就是几个动物,自动排列生成什么的 class Animal(object): def __init__(self,name,weight): self.name = name self.weight ...
- javascript语法之函数的定义
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...