Oracle SQL七次提速技巧

以下SQL执行时间按序号递减。

1,动态SQL,没有绑定变量,每次执行都做硬解析操作,占用较大的共享池空间,若共享池空间不足,会导致其他SQL语句的解析信息被挤出共享池。

create or replace procedure proc1

as

begin

for i in 1..100000 loop

execute immediate ‘insert into t values(‘||i||‘)‘;

commit;

end loop;

end;

2,动态SQL,绑定变量,SQL语句只要执行一次硬解析即可。

create or replace procedure proc2

as

begin

for i in 1..100000 loop

execute immediate ‘insert into t values(:x)‘ using i;

commit;

end loop;

end;

3,静态SQL语句,在执行之前的编译阶段就已经解析,动态SQL在执行的过程中再解析。

create or replace procedure proc3

as

begin

for i in 1..100000 loop

insert into t values(i);

commit;

end loop;

end;

4,批量提交,减少commit次数能显著减少LGWR的触发次数,commit操作不是写数据,而是记录SCN,所以commit操作的时间并不长,但提交量大时仍有区别。

create or replace procedure proc4

as

begin

for i in 1..100000 loop

insert into t values(i);

end loop;

commit;

end;

5,逐条插入变成集合操作,整批地写入DATA BUFFER中,然后再刷新到硬盘。

insert into t select rownum from dual connect by level<=100000;

6,直接路径读写方式:跳过DATA BUFFER,将数据直接写入到硬盘。

缺点:在DATA BUFFER中没有预存,所以此操作后的第一次读会有物理读。

优点:一般用于海量数据迁移,数据量远超物理内存。

create table t as select rownum x from dual connect by level <= 100000;

7,依据硬件环境,开启一定的并行。

缺点:占用大量CPU资源。

create table t nologging parallel xx as select rownum x from dual connect by level <= 100000;

时间: 2024-08-04 15:54:11

Oracle SQL七次提速技巧的相关文章

oracle sql优化技巧

数据库方面一直是自己的薄弱项,现在以本文慢慢积累总结oracle sql优化的一些技巧. 1.首先大家很容易想到的一切优化技巧--索引,索引有啥用?索引在表数据量很大时添加索引确实能加快查询速度,通过索引查询能很好地避免全表扫描. 但应该也要注意的时这是在数据量较大的时候.同时数据较小时,反而浪费索引空间.另外,添加索引之后数据的插入,更新反而会变慢,在插入或修改记录 时需要新建索引并排序. 索引创建语句: create [unique] index xxx on A(column 1,colu

oracle sql使用技巧汇总

1.删除一个表的重复数据 所用的table_name一样 DELETE FROM table_name a WHERE rowid > ( SELECT min(rowid) FROM table_name b WHERE b.id = a.id and b.name=a.name); 2.导出一个用户的所有信息 exp scott/[email protected] file=d:/scott.dmp3.导入一个用户的所有信息 imp scott/[email protected] file=

Oracle SQL(七)

11. Oracle 定时任务基础 11.1 简介 oracle job 是应用在数据库层面,用来定时执行存储过程或者 SQL 语句的定时器. 11.2 查询 --当前库中运行的 job SELECT t.* FROM dba_jobs t 11.3 创建 11.3.1 SQL语句执行创建 declare job number; BEGIN DBMS_JOB.SUBMIT( JOB => job, /*自动生成JOB_ID*/ WHAT =>'PRO_USER_ORDER(to_char(SY

oracle sql优化

第一掌 避免对列的操作 任何对列的操作都可能导致全表扫描,这里所谓的操作包括数据库函数.计算表达式等等,查询时要尽可能将操作移至等式的右边,甚至去掉函数. 例1:下列SQL条件语句中的列都建有恰当的索引,但30万行数据情况下执行速度却非常慢: select * from record where  substrb(CardNo,1,4)='5378'(13秒) select * from record where  amount/30< 1000(11秒) select * from recor

Oracle SQL执行计划基线总结(SQL Plan Baseline)

一.基础概念 Oracle 11g开始,提供了一种新的固定执行计划的方法,即SQL plan baseline,中文名SQL执行计划基线(简称基线),可以认为是OUTLINE(大纲)或者SQL PROFILE的改进版本,基本上它的主要作用可以归纳为如下两个: 1.稳定给定SQL语句的执行计划,防止执行环境或对象统计信息等等因子的改变对SQL语句的执行计划产生影响! 2.减少数据库中出现SQL语句性能退化的概率,理论上不允许一条语句切换到一个比已经执行过的执行计划慢很多的新的执行计划上! 注意:

使用Oracle Sql Developer将SQL SERVER 2008数据库移植到Oracle 11g

ORACLE官方提供的Sql Developer自带的Oracle Migration Workbench. 什么是Oracle SQL Developer?在官方页面上,是这样介绍它的: Oracle SQL Developer is a free and fully supported graphical tool for database development. With SQL Developer, you can browse database objects, run SQL st

sql优化原则与技巧

加快sql查询是非常重要的技巧,简单来说加快sql查询的方式有以下几种:一.索引的引用 1.索引一般可以加速数据的检索速度,加速表与表之间的链接,提高性能,所以在对海量数据进行处理时,考虑到信息量比较大,应该对表建立索引,包括在主键上建立聚簇索引,将聚合索引建立在日期刊上等.索引的优点有很多,但是对于索引的建立,还需要考虑实际情况,而不是对每一个列建立一个索引,比如针对大表的分组.排序等字段,都要建立相应索引,同时还应该考虑建立符合索引.增加索引的同时也有很多不好的方面,首先,创建索引和维护索引

《精通Oracle SQL(第2版) 》

<精通Oracle SQL(第2版) > 基本信息 作者: (美)Karen Morton    Kerry Osborne    Robyn Sands    Riyaj ShamsudeenJared Still 译者: 朱浩波 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9787115351661 上架时间:2014-5-5 出版日期:2014 年5月 开本:16开 页码:1 版次:1-1 所属分类:计算机 > 数据库 > Oracle 更多关于>&g

【重磅干货】看了此文,Oracle SQL优化文章不必再看!

听“俊”一席话,胜读十年书.看了这篇由DBA+社群联合发起人丁俊大师(网名:dingjun123)分享的SQL优化大作,其他Oracle SQL优化文章都不必再看了! 专家简介 丁俊 网名:dingjun123 DBA+社群联合发起人 性能优化专家,Oracle ACEA,ITPUB开发版资深版主.8年电信行业从业经验,在某大型电信系统提供商工作7年,任资深工程师,从事过系统开发与维护.业务架构和数据分析.系统优化等工作.擅长基于ORACLE的系统优化,精通SQL.PL/SQL.JAVA等.电子