oracle 分页:

-- 第一种
select *
from (select aed.*, row_number() over(order by aed.created_date) rw
from alarm_event ae, alarm_event_detail aed
where ae.id = aed.id)
where rw between 10 and 15;
-- 第二种
select *
from (select t.*, rownum rw
from (select aed.*
from alarm_event ae, alarm_event_detail aed
where ae.id = aed.id
order by aed.created_date) t
where rownum < 16)
where rw >= 10;

with 关键字 (解决子句中多次引用相同的查询块,或者解决多层嵌套查询时)下面中也有使用分析函数解决分组问题。

with t1 as
(select ai.accountid,
lb.businesssum,
lb.customerid,
lb.businesstype,
lb.loanterm,
bp.bar_code_no,
count(lb.putoutno) over(partition by ai.accountid, lb.businesssum, lb.customerid, lb.businesstype, lb.loanterm, bp.bar_code_no) ct,
row_number() over(partition by ai.accountid, lb.businesssum, lb.customerid, lb.businesstype, lb.loanterm, bp.bar_code_no order by lb.customerid) rw
from cfss.loan_balance lb
left join cfss.account_info ai
on lb.putoutno = ai.objectid
and ai.accountserialno = ''
left join cfss.business_putout bp
on bp.serialno = lb.putoutserialno
where lb.putoutdate >= '2018/06/28'
and lb.businesstype = '1702-SB-01'),
t2 as
(select lb.customerid, lb.normalbalance, lb.overduebalance
from cfss.loan_balance lb, t1
where lb.customerid = t1.customerid
and t1.ct > 1
and rw = 1
and lb.businesstype = '1702-SB-01'), t3 as
(select ci.certtype,
ci.certid,
sum(normalbalance) + sum(overduebalance) as balance
from t2, cfss.customer_info ci
where t2.customerid = ci.customerid
group by ci.certtype, ci.certid)
select t3.*, bc.creditsum, bc.customerid
from cfss.business_credit bc, t3
where bc.certtype = t3.certtype
and bc.certid = t3.certid
and balance > bc.creditsum;

开始 搜集统计信息。(搜集完成统计信息,可以使执行计划更优)

begin
dbms_stats.gather_table_stats(ownname => 'CFSS',
TABNAME => 'BUSINESS_PUTOUT',
cascade => true);
end;

分析和开窗函数

使用绑定变量 VS 不使用绑定变量

https://blog.csdn.net/Alen_Liu_SZ/article/details/80527834

1 不使用绑定变量
 
1)创建表并测试
  1.  
    SQL> set timing on
  2.  
    SQL> create table t1(id int);
  3.  
     
  4.  
    Table created.
  5.  
     
  6.  
    Elapsed: 00:00:01.18
  7.  
    SQL> begin
  8.  
    2 for i in 1 .. 100000
  9.  
    3 loop
  10.  
    4 execute immediate 'insert into t1 values('||i||')';
  11.  
    5 end loop;
  12.  
    6 commit;
  13.  
    7 end;
  14.  
    8 /
  15.  
     
  16.  
    PL/SQL procedure successfully completed.
  17.  
     
  18.  
    Elapsed: 00:01:34.06
2)查看硬解析次数以及执行次数
  1.  
    SQL> set linesize 200
  2.  
    SQL> col sql_text for a40
  3.  
    SQL> col sql_id for a15
  4.  
    SQL> select sql_text,sql_id,executions,parse_calls from v$sql
  5.  
    2 where sql_text like 'insert into t1 values%'
  6.  
    3 and rownum <= 10;
  7.  
     
  8.  
    SQL_TEXT SQL_ID EXECUTIONS PARSE_CALLS
  9.  
    ---------------------------------------- --------------- ---------- -----------
  10.  
    insert into t1 values(99739) 4hwu069b7w058 1 1
  11.  
    insert into t1 values(99795) c3wc2p1y440n6 1 1
  12.  
    insert into t1 values(99600) ggxrmk462s138 1 1
  13.  
    insert into t1 values(99610) 8m3jrkgshh1bj 1 1
  14.  
    insert into t1 values(99857) a8wn2bw9cw1ck 1 1
  15.  
    insert into t1 values(99809) 87uzu2cggw1hq 1 1
  16.  
    insert into t1 values(99714) bddx0bx62n1qz 1 1
  17.  
    insert into t1 values(99559) cbgyw5tudc1yq 1 1
  18.  
    insert into t1 values(99745) 2xngw3w9b829n 1 1
  19.  
    insert into t1 values(99826) 7s29ajyy3h2nh 1 1
  20.  
     
  21.  
    10 rows selected.
  22.  
     
  23.  
    Elapsed: 00:00:00.01
  24.  
    SQL> select count(*) from v$sql
  25.  
    2 where sql_text like 'insert into t1 values%';
  26.  
     
  27.  
    COUNT(*)
  28.  
    ----------
  29.  
    461
  30.  
     
  31.  
    Elapsed: 00:00:00.15
  32.  
    SQL>
思考:为何只有461次?
shared_pool大小有限,无法保存每条解析过的sql,会通过LRU算法踢出冷块。
 
2 使用绑定变量
 
1)清空缓存,测试
  1.  
    SQL> alter system flush shared_pool;
  2.  
     
  3.  
    System altered.
  4.  
     
  5.  
    Elapsed: 00:00:00.07
  6.  
    SQL> alter system flush buffer_cache;
  7.  
     
  8.  
    System altered.
  9.  
     
  10.  
    Elapsed: 00:00:00.46
  11.  
    SQL> begin
  12.  
    2 for i in 1 .. 100000
  13.  
    3 loop
  14.  
    4 execute immediate 'insert into t1 values (:X)' using i;
  15.  
    5 end loop;
  16.  
    6 commit;
  17.  
    7 end;
  18.  
    8 /
  19.  
     
  20.  
    PL/SQL procedure successfully completed.
  21.  
     
  22.  
    Elapsed: 00:00:12.06
2)查看硬解析次数以及执行次数
  1.  
    SQL> select sql_text,sql_id,executions,parse_calls from v$sql
  2.  
    2 where sql_text like 'insert into t1 values%';
  3.  
     
  4.  
    SQL_TEXT SQL_ID EXECUTIONS PARSE_CALLS
  5.  
    ---------------------------------------- --------------- ---------- -----------
  6.  
    insert into t1 values (:X) d1f3fv8rt9j8t 100000 1
  7.  
     
  8.  
    Elapsed: 00:00:00.11

java编码格式大讲解的更多相关文章

  1. 第二十四节:Java语言基础-讲解数组的综合应用

    数组的综合应用 // 打印数组 public static void printArray(int[] arr) { for(int x=0;x<arr.length;x++) { if(x!= ...

  2. 1月中旬值得一读的10本技术新书(机器学习、Java、大数据等)!

    1月中旬,阿里云云栖社区 联合 博文视点 为大家带来十本技术书籍(机器学习.Java.大数据等).以下为书籍详情,文末还有福利哦! 书籍名称:Oracle数据库问题解决方案和故障排除手册 内容简介 & ...

  3. java filechannel大文件的读写

    java读取大文件 超大文件的几种方法 转自:http://wgslucky.blog.163.com/blog/static/97562532201332324639689/   java 读取一个 ...

  4. Java查询大文本

    但JAVA本身缺少相应的类库,需要硬编码才能实现结构化文件计算,代码复杂且可读性差,难以实现高效的并行处理. 使用免费的集算器可以弥补这一不足.集算器封装了丰富的结构化文件读写和游标计算函数,书写简单 ...

  5. 【原创】用JAVA实现大文件上传及显示进度信息

    用JAVA实现大文件上传及显示进度信息 ---解析HTTP MultiPart协议 (本文提供全部源码下载,请访问 https://github.com/grayprince/UploadBigFil ...

  6. 一句话了解JAVA与大数据之间的关系

    大数据无疑是目前IT领域的最受关注的热词之一.几乎凡事都要挂上点大数据,否则就显得你OUT了.如果再找一个可以跟大数据并驾齐驱的IT热词,JAVA无疑是跟大数据并驾齐驱的一个词语.很多人在提到大数据的 ...

  7. java处理大文本方案

    转载自:http://langgufu.iteye.com/blog/2107023 java处理大文件,一般用BufferedReader,BufferedInputStream这类带缓冲的Io类, ...

  8. 贝叶斯公式由浅入深大讲解—AI基础算法入门

    1 贝叶斯方法 长久以来,人们对一件事情发生或不发生的概率,只有固定的0和1,即要么发生,要么不发生,从来不会去考虑某件事情发生的概率有多大,不发生的概率又是多大.而且概率虽然未知,但最起码是一个确定 ...

  9. java读大文件最快性能【转】

    java读大文件最快性能 完全引用自: 几种读大文件方法的效率对比测试 据说1.88g只要5秒左右,未亲测. /** * 读大文件 * BufferedReader + char[] * @throw ...

随机推荐

  1. 这是一篇通过open live writer发布的博文

    这两天零零总总的尝试了两三款写博客的软件,总感觉不怎么上手,最后还是使用博客园官方推荐的工具写博吧,简单方便,目前的功能基本都有,尤其是粘贴图片特别方便,回想之前的几篇博文,真是一种煎熬哈哈(对于我这 ...

  2. 20191225_Python构造函数知识以及相关注意事项

    Python构造函数格式为__init__() 注:下划线为两个而不是一个 可以有无参构造 instance: class city: def printout(self,first,second): ...

  3. [转]Vue 2.0——渐进式前端解决方案

    前言:框架是什么?为什么要有框架?在众多的框架之中,Vue 独具魅力之处在哪里呢?其背后的核心思想是什么?Vue 究竟火到什么程度?最近发布的 Vue2.0 又做了哪些改进呢?Vue 和 Weex 又 ...

  4. selenium的显示等待、隐式等待

    转载:https://www.cnblogs.com/mabingxue/p/10293296.html Selenium显示等待和隐式等待的区别1.selenium的显示等待原理:显示等待,就是明确 ...

  5. JavaScript中的 typeof,null,和undefined

    typeof操作符 null 在JavaScript中null表示“什么都没有”. null是一个只有一个值的特殊类型.表示一个空对象引用. typeof null; 返回的是object 可以将nu ...

  6. 关于我 & 关于这个博客

    关于我 OIer,初一在读,蒟蒻,普及组选手,只拿过两次PJ2=,实乃菜也 喜欢数学,OI,OI 上主要研究高级数据结构(如平衡树)和一些不那么暴力的算法(如分块) 打不动 CF . 关于这个博客 是 ...

  7. Java“被迫”退出争霸,Python继续霸占首位!老牌程序员:我不服

    2019年转眼已经接近尾声,如果盘点下2019年最火的语言,除了Python还能有谁?你心中的王者语言又是谁? 这一年Python风光无限 这一年JAVA走向右边 这一年,我们都很感慨,你呢? 关于P ...

  8. The Reason Why Cosmetic Airless Bottles Are Widely Used

    The contents of the Cosmetic Airless Bottles    can be isolated from the air, to prevent the product ...

  9. spring controller中默认转发、forward转发、redirect转发之间的区别

    默认转发 @RequestMapping("/123") public String test(HttpSession session) { System.out.println( ...

  10. NAT ALG原理与应用

    1  NAT ALG简介 普通NAT实现了对UDP或TCP报文头中的的IP地址及端口转换功能,但对应用层数据载荷中的字段无能为力,在许多应用层协议中,比如多媒体协议(H.323.SIP等).FTP.S ...