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. python之路之网络基础

    c类地址

  2. C++-1019-Number Sequence

    题意: 求数字112123123412345123456123456712345678123456789123456789101234567891011123456789101112123456789 ...

  3. maven基础学习篇

    一.Maven的两大核心功能:依赖管理(主要是jar包的管理)  和   一键构建 1.依赖管理:maven项目所需要的jar包全部放在仓库中,项目只放置jar包的坐标,所要用到的jar包都从仓库中获 ...

  4. win7搭建python环境--同时安装版本2和版本3

    软件准备[以win7 64位系统为例] python2.x版本建议使用2.7.9或更新版本,因为该版本开始集成了setuptools和pip,这样省去了不少功夫 python2.7.9下载地址: ht ...

  5. python面试的100题(1)

    题目:有一个jsonline格式的文件file.txt大小约为10K def get_lines(): with open('file.txt','rb') as f: return f.readli ...

  6. DVWA全级别之SQL Injection(SQL注入)

    DVWA全级别之SQL Injection(注入)   DVWA简介 DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web ...

  7. echarts制作html和JavaScript的时钟和代码分析与注释

    1.效果图 2.说明: 2.1 代码是大神制作的,我进行修改,感谢大神,原创属于他. 2.2 我对代码进行分析.注释.整理,增加代码的可读性. 2.3 通过上述自己的工作,自己也能熟悉相关的JavaS ...

  8. 思科ISE配置专题–ISE部署方式

    ISE部署方式有三种: 1.Standalong Deployment 所谓Standalong部署就是只有一台ISE,所有的组件都安装在这一台上面.一台ISE装好的时候默认是“Standalong” ...

  9. Java - Test - TestNG: Idea 添加 TestNG 依赖

    1. 概述 Idea 开发的 maven 添加 testng 依赖 2. 背景 最近复习 TestNG 尝试搭建环境 发现教材和网上很多的教程, 都是 eclipse 的 我用的是 idea 这个貌似 ...

  10. GIL/Copy/私有/面向对象

    1. GIL Python语言和GIL没有关系.仅仅是由于历史原因在Cpython虚拟机(解释器),难以移除GIL. GIL:全局解释器锁.每个线程在执行的过程都需要先获取GIL,保证同一时刻只有一个 ...