oracle千万级数据分页存储过程优化.doc_第1页
oracle千万级数据分页存储过程优化.doc_第2页
oracle千万级数据分页存储过程优化.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、oracle 千万级数据分页存储过程优化随着数据量的增加,Oracle 数据库分页存储过程(使用rownum 分页)查询性能越来越差,查询时间也越来越长,于是优化势在必行,结合用户一般使用特点(一般看前几页的较多),于是以此为切入点优化原先的存储过程,在WHERE 条件中增加rownum<=pageindex*pageSize ,减少首次过滤的数据量,调整后的存储过程如下: CREATE OR REPLACE PACKAGE DotNet isTYPE type_cur IS REF CURSOR; - 定义游标变量用于返回记录集PROCEDURE DotNetPagination_Ne

2、w(Pindex in number, -分页索引Psqlin varchar2, -产生 dataset 的 sql 语句Psizein number, - 页面大小v_curout type_cur -返回当前页数据记录);procedure DotNetPageRecordsCount_New(Psqlcount invarchar2, -产生 dataset 的 sql 语句Prcountoutnumber -返回记录总数);end DotNet_New;CREATE OR REPLACE PACKAGE BODY DotNet isPROCEDURE DotNetPagination

3、(Pindex in number,Psqlin varchar2,Psizein number,v_curout type_cur) ASv_sqlVARCHAR2(4000);v_countnumber;v_Plownumber;v_Pheinumber;v_Appsql varchar2(1000);Beginv_Phei:= Pindex * Psize + Psize;v_Plow:= v_Phei - Psize + 1;-优化的地方 -v_Appsql := ;if (Pindex < 1000) thenv_Appsql := and rownum <= | v_P

4、hei; end if;v_sql := select * from ( | Psql | v_Appsql |) where rn between | v_Plow | and | v_Phei;-原方法 v_sql := select * from ( | Psql | ) where rn between | v_Plow | and | v_Phei;open v_cur for v_sql;End DotNetPagination;procedure DotNetPageRecordsCount(Psqlcount in varchar2, Prcount outnumber) asv_sqlvarchar2(4000);v_prcount number;beginv_sql := select count(*) from ( | Psqlcount | ); execute immediate v_sqlinto

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论