当前位置:首页 >> 建筑/土木 >>

千万数量级分页存储过程,可支持多表查询,任意排序


千万数量级分页存储过程,可支持多表查询,任意排序.txt31 岩石下的小草教我们坚强, 峭壁 上的野百合教我们执著,山顶上的松树教我们拼搏风雨,严寒中的腊梅教我们笑迎冰雪。从 程序中考虑:比如用数据缓冲和连接池技术 从数据库服务器端考虑:比如 csdn 只选出前 300 行纪录,因为用户不需要那么多纪录。你也 不必把 1000 万条全部分页。你也不必把纪录放在一个表中,一年(太多

就一个月)的数据放 一张表或定期把历史数据导出到数据数据仓库中, 不要用一张表装 1000 万条记录。 做好索引。 优化查询!尽量少用模糊查询,避免表扫描。不能让客户端连续多次搜索(csdn 就是)

千万级的数据库,有分页的意义吗?对于用户来说就是信息的海洋了,去看看 Google 怎么做的 吧, 根本就不存在如何分页的问题,如果一个结果有千万条,那跟没有结果一样是没有一样.应该 是统计条数,取出,前 N 条进行分页,如果到地还在准备分页的话,再次取结果 n,进行分页.并 且在其间推荐用户进行递进式搜索,来降低信息量,才式正确的

我有一个方法: (对于喜欢用 select * 的同行可能有用) 先检索出来,符合条件的所有 id (唯一标识)放在内存里 然后根据当前页数和每页多少行纪录 去内存中取 id 号的当前集 根据当前集 中的某一条 去数据库中检索相应的数据行 这里建议使用编译预处理 PrepareStatement 将结果放进数据类 (如果你的数据只有两列当然可以省略这一步) 然后把数据类添加进 ArrayList 或者 HashMap 然后 把载页面上输出 ArrayList 或者 HashMap 的数据 这样做,是因为只检索一列数据 要比检索多类要快得多 占用更少的内存。 一次只精确定位一条纪录 要比一次取出多条要快,这里的瓶颈在于频繁的与数据库交 互,但是我们使用编译预处理可以很大程度上提高性能。

千万数量级分页存储过程(可支持多表查询,任意排序) 功能不错的分页存储过程,可支持多表查询,任意排序

CreatePROCEDUREusp_PagingLarge @TableNamesVARCHAR(200),--表名,可以是多个表,但不能用别名 @PrimaryKeyVARCHAR(100),--主键,可以为空,但@Order 为空时该值不能为空 @FieldsVARCHAR(200),--要取出的字段, 可以是多个表的字段, 可以为空, 为空表示 select* @PageSizeINT,--每页记录数 @CurrentPageINT,--当前页,0 表示第 1 页 @FilterVARCHAR(200)='',--条件,可以为空,不用填 where @GroupVARCHAR(200)='',--分组依据,可以为空,不用填 groupby @OrderVARCHAR(200)=''--排序,可以为空,为空默认按主键升序排列,不用填 orderby

AS BEGIN DECLARE@SortColumnVARCHAR(200) DECLARE@OperatorCHAR(2) DECLARE@SortTableVARCHAR(200) DECLARE@SortNameVARCHAR(200) IF@Fields='' SET@Fields='*' IF@Filter='' SET@Filter='Where1=1' ELSE SET@Filter='Where'+@Filter IF@Group<>'' SET@Group='GROUPBY'+@Group

IF@Order<>'' BEGIN DECLARE@pos1INT,@pos2INT SET@Order=REPLACE(REPLACE(@Order,'asc','ASC'),'desc','DESC') IFCHARINDEX('DESC',@Order)>0 IFCHARINDEX('ASC',@Order)>0 BEGIN IFCHARINDEX('DESC',@Order)<CHARINDEX('ASC',@Order) SET@Operator='<=' ELSE SET@Operator='>=' END ELSE SET@Operator='<=' ELSE SET@Operator='>=' SET@SortColumn=REPLACE(REPLACE(REPLACE(@Order,'ASC',''),'DESC',''),'','') SET@pos1=CHARINDEX(',',@SortColumn) IF@pos1>0 SET@SortColumn=SUBSTRING(@SortColumn,1,@pos1-1) SET@pos2=CHARINDEX('.',@SortColumn) IF@pos2>0 BEGIN SET@SortTable=SUBSTRING(@SortColumn,1,@pos2-1) IF@pos1>0 SET@SortName=SUBSTRING(@SortColumn,@pos2+1,@pos1-@pos2-1) ELSE SET@SortName=SUBSTRING(@SortColumn,@pos2+1,LEN(@SortColumn)-@pos2) END

ELSE BEGIN SET@SortTable=@TableNames SET@SortName=@SortColumn END END ELSE BEGIN SET@SortColumn=@PrimaryKey SET@SortTable=@TableNames SET@SortName=@SortColumn SET@Order=@SortColumn SET@Operator='>=' END

DECLARE@typevarchar(50) DECLARE@precint Select@type=t.name,@prec=c.prec FROMsysobjectso JOINsyscolumnscono.id=c.id JOINsystypestonc.xusertype=t.xusertype Whereo.name=@SortTableANDc.name=@SortName IFCHARINDEX('char',@type)>0 SET@type=@type+'('+CAST(@precASvarchar)+')'

DECLARE@TopRowsINT SET@TopRows=@PageSize*@CurrentPage+1 print@TopRows print@Operator EXEC(' DECLARE@SortColumnBegin'+@type+' SETROWCOUNT'+@TopRows+' Select@SortColumnBegin='+@SortColumn+'FROM'+@TableNames+''+@Filter+''+@Group+'or DERBY'+@Order+' SETROWCOUNT'+@PageSize+' Select'+@Fields+'FROM'+@TableNames+''+@Filter+'AND'+@SortColumn+''+@Operator+'@S ortColumnBegin'+@Group+'orDERBY'+@Order+' ') END

GO --调用例子:

--1.单表/单排序

EXECusp_PagingLarge'bigtable','d_id','d_id,d_title,d_content,d_time',20,1,'','', 'd_iddesc' --2.单表/多排序 EXECusp_PagingLarge'bigtable','d_id','*',20,0,'','','d_timeasc,d_iddesc'

--3.多表/单排序 EXECusp_PagingLarge'bigtableleftjoinbigtable_authoronbigtable.d_id=bigtable_auth or.BigTable_id','bigtable.d_id','bigtable.d_id,bigtable.d_title,bigtable.d_conte nt,bigtable.d_time,bigtable_author.d_author',20,0,'','','bigtable.d_idasc'

--4.多表/多排序 EXECusp_PagingLarge'bigtableleftjoinbigtable_authoronbigtable.d_id=bigtable_auth or.BigTable_id','bigtable.d_id','bigtable.d_id,bigtable.d_title,bigtable.d_conte nt,bigtable.d_time,bigtable_author.d_author',20,0,'','','bigtable.d_timeasc,bigt able.d_iddesc'


相关文章:
查询存储过程
查询存储过程_IT/计算机_专业资料。解密存储过程今日推荐 180份文档 CET...千万数量级分页存储过程... 3页 免费 千万数量级分页存储过程... 2页 免费 ...
sql server数据库分页查询技术
引言在列表查询时由于数据量非常多,一次性查出来会...3.千万级分页存储过程大家百度一下这个标题立马会...个查询 查询 1,是利用系统表获取排序字段、类型和...
动态多条件查询分页以及排序(一)--MVC与Entity Framewo...
动态多条件查询分页以及排序(一)--MVC与Entity Framework...2.对多表查询以及 or 的支持 不是很好。 而我们...但如何使用存储过程,存 储过程可以返回表 可以返回...
善用临时表---同时查询多张表的存储过程
善用临时表---同时查询多张表的存储过程_计算机硬件及网络_IT/计算机_专业资料...(*) from #temptable --对临时表中的数据分页读取-select * from #temp...
不同情况下磁场的数量级
不同情况下磁场的数量级_电力/水利_工程科技_专业资料。今日推荐 78...基本数量级单位表 2页 免费 千万数量级分页存储过程... 3页 免费 数量级估算...
26-排序自定义分页数据
和默认翻页方式相比, 自定义分页能提高几个数量级的...加入了一个允许排序 的字段,还需要去修改存储过程。...查询和前面的用来从 Products 表获取所有行的查询有...
存储过程实现手工分页例子
存储过程实现手工分页例子 2009-12-30 17:04 今天...表中的内容 复制给临时表 /* 对输出变量@total ...查询出手工分页时要显示的记录内容 select * from ...
实现DataGridView 的分页及全选取消全选的功能
千万数量级分页存储过程 -- Modify Date: 2010-10-26 -- === SET ANSI_NULLS...表名或视图名 表名或视图名 :主关键字 主关键字 :排序语句,不带Order By...
Oracle数据分页存储过程实现
Oracle数据分页存储过程实现Oracle数据分页存储过程实现...(P_TABLENAMEVARCHAR2, --表名 P_PAGEINDEXNUMBER...--查询条件 P_ORDER_KEYVARCHAR2, --排序关键字(...
大数据量下的分页存储过程
在现网上执行了一下该存储过程, 感觉效率也还可以,...设置排序类型, 非0 值则降序 -- 查询条件(注意:...ASP 千万级数据分页的存... 暂无评价 1页 免费 ...
更多相关标签:
sql 千万级数据分页 | mysql千万级数据分页 | oracle千万级数据分页 | 千万数据分页 | mysql 千万数据分页 | mysql 千万级分页 | mysql 千万 分页 | sql server千万级分页 |