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

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


千万数量级分页存储过程,可支持多表查询,任意排序.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/计算机_专业资料。千万数量级分页存储过程(可支持多表查询,任意排序); 功能不错的分页存储过程,可支持多表查询,任意...
管理系统中计算机应用综合测验试题及答案
A.超市的收付款系统 22.能够对数据进行分类、排序...中利用系统存储过程可以查看数据表的信息,其语法格式...B.基于面向过程模型 80.数据库技术与多学科技术有...
千万数量级分页存储过程
千万数量级分页存储过程,可... 2页 免费 SQLServer分页查询通用存储... 3页...表名称,视图 2.PrimaryKey :主关键字 3.Sort :排序语句,不带 Order By ...
分页查询存储过程
sqlserver+支持多表联合... 2页 免费 ORACLE分页查询排序存储... 3页 免费 SQL之通用查询分页存储过... 3页 1下载券 千万数量级分页存储过程... 3页 免费...
简答题 -带答案
可以通过存储过程等在用户较少的情况下执行,从而错开...9. Oracle 是怎样分页的? Oracle 中使用 rownum ...条件查询、分组、排序、使 聚集函数,哪些到了...
26-排序自定义分页数据
和默认翻页方式相比, 自定义分页能提高几个数量级的...加入了一个允许排序 的字段,还需要去修改存储过程。...和前面的用来从 Products 表获取所有行的查询有些不...
大数据量下的分页存储过程
在现网上执行了一下该存储过程, 感觉效率也还可以,...(建议 排序字段 和 经常查询字段 同一个,效率...ASP 千万级数据分页的存... 暂无评价 1页 免费 ...
6实验六 存储过程
存储过程 二、实验内容 1、创建简单存储过程 (1)创建一个名为stu_pr的存储过程,该存储过程能查询出051班学生的所有资料,包括 学生的基本信息、学生的选课信息(...
查询存储过程
查询存储过程_IT/计算机_专业资料。解密存储过程今日...千万数量级分页存储过程... 2页 免费 使用存储过程...
存储过程海量分页
千万数量级分页存储过程,可... 3页 免费 书香校园...有一个聚集索引,因为目录只能按照一种方法 进行排序...是能够根据查询要求, 迅速缩小查询范围,避免全表扫描...
更多相关标签:
oracle千万级数据分页 | sql 千万级数据分页 | 千万数据分页 | 千万级分页存储过程 | php 千万级分页 | 千万级数据分页 | mysql千万级数据分页 | oracle 分页排序 |