今天定了一个扩展性很好的一个分页存储过程,有需要的朋友可以参考一下。 代码如下USE [a6756475746] GO /****** Object: StoredProcedure [dbo].[tbl_order_SearchWhereAndPage] Script Date: 11/01/2011 09:37:39 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[tbl_order_SearchWhereAndPage]@AllCount int OUTPUT,@PageIndex int,@PageSize int ,@minDate datetime,@maxDate da...
通过SQL 查询分析器,显示比较:我的结论是:分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句分页方案一:(利用Not In和SELECT TOP分页) 效率次之,需要拼接SQL语句分页方案三:(利用SQL的游标存储过程分页) 效率最差,但是最为通用
sql千万级数据效率分析与方法top 100 * from (select top 500 * from T1 order by id asc) a order by id desc 先asc取前500条 再倒着取(desc)这个结果的100条... MSSQL在我这里测试通过 这个ID字段如果是默认的升序序列 也是主键列 那下面这句就能实现了 select * from t1 where id between 400 and 500 我就知道三种方法 having in between and 和 >= and <= 测试过 between and 的效率应该是3者最高的首先: id>400 and id<...
一条sql 语句搞定 select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段 具体实现: 关于数据库分页:declare @start int,@end int @sql nvarchar(600)set @sql='select top'+str(@end-@start+1)+'+from t where rid not in(select top'+str(@str-1)+'rid from t where rid>-1)'exec sp_executesql @sql 注意:在top后不能直...
文章收藏了两款sql 分页存储过程代码,这二款存储过程是二款高效分页存储过程代码,如果你觉得自己写的语句不够,强的话,可以利用我们现成的高效分页存储过程实例代码。文章收藏了两款sql 代码,这二款存储过程是二款高效分页存储过程代码,如果你觉得自己写的语句不够,强的话,可以利用我们现成的高效分页存储过程实例代码。create procedure pages @tablenames varchar(200), --表名,可以是多个表,但不能用别名 @primarykey varc...
sql 通用高效分页代码(存储过程是带有sql注入)sql 通用高效分页代码(是带有sql注入)大家可以看到上面的存储过程中是通过一些步骤最终拼接成一个sql字符串,然后通过exec执行这个串得到分页的结果。 我们假定要做一个这样的查询,通过用户名username模糊查询用户,为了叙述方便,便于理解我们只考虑取第一页的情况,取出存储过程中取第一页的拼串行如下: 为了便于说明问题,我们可以假定@pagesize为20,@strgetfields为 ‘*,@tbl...
如果你是几千上万数据,就直接使用mysql自带的函数 limit的普通用法就OK了,如果是100万以上的数据,可能就要讲方法了,下面我们来做个百万级数据的分页查询语句.
高效分页方法代码(sql百万级数据量分页代码) @querystr nvarchar(300),--表名、视图名、查询语句 @pagesize int=10,--每页的大小(行数) @pagecurrent int=1,--要显示的页 @fdshow nvarchar (100)=,--要显示的字段列表,如果查询结果有标识字段,需要指 定此值,且不包含标识字段 @fdorder nvarchar (100)=,--排序字段列表 @wherestr nvarchar (200)=, --内容是 id=3 and model_no like %24% and @rscount int=0 output as set ...
public int TotalPage = 0; public int PageCurrent = 1; public int PageSize = 25; public int RowsCount = 0; string userid, username; public DataTable dt = new DataTable(); public string path, userwelcome; public string opt,cid; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Request.Params["page"] == null || Request.Params["page"].ToString().Equals("")) Pag...
CREATE Procedure FramWorkPage @TableName varchar(50), --表名 @Fields varchar(5000) = '*', --字段名(全部字段为*) @OrderField varchar(5000), --排序字段(必须!支持多字段) @sqlWhere varchar(5000) = Null,--条件语句(不用加where) @pageSize int, --每页多少条记录 @pageIndex int = 1 , --指定当前为第几页 @TotalPage int output, --返回条数 @OrderType bit -- 设置排序类型,1 升序 0 值则降序 as begin dec...
好了看了上面的一多实例你就知道了 SQL2005 高效分页sql查询语句经典实例用法了吧,其实代码都很简单哦。方法一 SQL2005 高效分页sql查询语句经典实例 代码如下: select top 10 * from ( select top (@Page * 10) ROW_NUMBER() OVER (order by id) as RowNum, id, username from Guest where username = user ) as T where RowNum > ((@Page - 1) * 10) 2 select * from ( select ROW_NUMBER() OVER(order by id) as RowNum,i...
CREATE PROCEDURE Pagination( @SQL nvarchar(1024), @PageSize int = 20, --分页大小 @PageIndex int = 0, --分页索引 @Sort nvarchar(100) = '''', --排序字段 @TotalCount int = 0 output --总数 )AS set nocount on/*声明查询字符串*/declare @strSQL nvarchar(4000) set @strSQL = select @TotalCount=count(*) from () as t /*取得查询结果总数*/exec sp_executesql@strSQL, int=0 OUTPUT, @TotalCount=...
很多朋友使用多了mysql limit进行分页到了oracle中就不知道如何写分页了,其实oracle分页与mssql分页很像的,下面我来给大家介绍oracle分页语句。很多朋友使用多了mysql limit进行分页到了oracle中就不知道如何写分页了,其实oracle分页与mssql分页很像的,下面我来给大家介绍oracle分页语句。最简单使用方法代码如下t2.* from (select rownum r,t1.* from youtable t1 where rownum<?) t2 where t2.r>?小于最大的,大于最小的,就是...
下面简单的分享了几条ORACLE中SQL分页语句,有需要的朋友可参考参考。下面简单的分享了几条ORACLE中SQL分页语句,有需要的朋友可参考参考。最常用的是方法一:代码如下 select * from (select ROWNUM as rn, Src.* from tab Src) DataSet Where rn> 10 and rn< 20 方法二: select * from (select ROWNUM as rn, Src.* from tab where rownum <= 150) where rn >= 100;结果发现由于该语句会先生成rownum 后执行order by 子句,因而排...
文章提供一个简单的实现的oracle SQL代码 ,希望对大家有帮助。/*+ ordered use_nl(t1 t2) */ id, user_id, age, gmt_createfrom (select ridfrom (select rid, rownum as rnfrom (select rowid as ridfrom test where user_id = :1order by gmt_create desc)where rownum <= :2)where rn >= :3) t1, test t2 where t1.rid = t2.rowid