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. C++-HDU1000,1001,1002-格式是真的坑

    #include <cstdio> int main(){ for(int a,b;~scanf("%d%d",&a,&b);printf(" ...

  2. go-redis 基于beego正确使用序列化存储数据和反序列化获取数据

    安装go-redis // 安装命令 go get github.com/gomodule/redigo/redis // 导入使用 import( "github.com/gomodule ...

  3. php中文乱码问题的终极解决方案汇总

    乱码是我们在开发可能经常遇见,也是最让人头疼的一个问题了,下面这篇文章主要介绍了在php开发中,可能遇见中文乱码问题的终极解决方案,文中介绍好几个情况下的解决方法,需要的朋友可以参考借鉴,下面来一起看 ...

  4. Educational Codeforces Round 82 (Rated for Div. 2)D(模拟)

    从低位到高位枚举,当前位没有就去高位找到有的将其一步步拆分,当前位多余的合并到更高一位 #define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h&g ...

  5. 解决com.netflix.zuul.FilterProcessor : null异常

    ZuulFilter过滤器的filterType方法返回一个字符串代表过滤器的类型,如果return null就会出现以上错误. 在zuul中有以下四种不同生命周期的过滤器类型 pre:路由之前 ro ...

  6. jquery--获取input checkbox是否被选中以及渲染checkbox选中状态

    jquery获取checkbox是否被选中 html <div><input type="checkbox" id="is_delete" n ...

  7. python"TypeError: 'NoneType' object is not iterable"错误解析

    尊重原创博主,原文链接:https://blog.csdn.net/dataspark/article/details/9953225 [解析] 一般是函数返回值为None,并被赋给了多个变量. 实例 ...

  8. Java中的门面设计模式及如何用代码实现

    门面设计模式又叫外观设计模式,其核心思想正如其字面意思,向用户提供一个门户,用户只需要访问这个门户来获取他们想要的数据,无需管理这个门户内部的构成,也无需知道里面的运行流程等等,对于开发者来说,使用门 ...

  9. IntelliJ IDEA 2017.3尚硅谷-----查看项目配置

  10. spring boot配置druid数据连接池

    Druid是阿里巴巴开源项目中一个数据库连接池. Druid是一个jdbc组合,包含三个部分, 1.DruidDriver代理Driver,能够提供基于Filter-Chain模式得插件体系2.Dru ...