`
heavenslv
  • 浏览: 81235 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

SQL优化 ----- 共享 SQL 语句

阅读更多

为了不重复解析相同的SQL 语句,在第一次解析之后, ORACLE 将SQL 语句存放在内存中.这

块位于系统全局区域SGA(system global area)的共享池(shared buffer pool)中的内存可以被所有的

数据库用户共享. 因此,当你执行一个SQL 语句(有时被称为一个游标)时,如果它和之前的执行过

的语句完全相同, ORACLE 就能很快获得已经被解析的语句以及最好的执行路径. ORACLE 的这

个功能大大地提高了SQL 的执行性能并节省了内存的使用.可惜的是ORACLE 只对简单的表提

供高速缓冲(cache buffering) ,这个功能并不适用于多表连接查询.

数据库管理员必须在init.ora 中为这个区域设置合适的参数,当这个内存区域越大,就可以保留

更多的语句,当然被共享的可能性也就越大了.

当你向ORACLE 提交一个SQL 语句,ORACLE 会首先在这块内存中查找相同的语句.这里需

要注明的是,ORACLE 对两者采取的是一种严格匹配,要达成共享,SQL 语句必须完全相同(包括空

格,换行等).共享的语句必须满足三个条件:

A.字符级的比较:

当前被执行的语句和共享池中的语句必须完全相同.

例如:

SELECT * FROM EMP;
 

和下列每一个都不同

SELECT * from EMP;
Select * From Emp;
SELECT * FROM EMP;
 

B.两个语句所指的对象必须完全相同:

例如:

用户 对象名 如何访问

Jack sal_limit private synonym
Work_city public synonym
Plant_detail public synonym
Jill sal_limit private synonym
Work_city public synonym
Plant_detail table owner
 

考虑一下下列SQL 语句能否在这两个用户之间共享.

 

共享SQL语句

 

 

C.两个SQL 语句中必须使用相同的名字的绑定变量(bind variables)

例如:

第一组的两个SQL 语句是相同的(可以共享),而第二组中的两个语句是不同的(即使在运行时,

赋于不同的绑定变量相同的值)

a.

select pin , name from people where pin = :blk1.pin;
select pin , name from people where pin = :blk1.pin;
 

b.

select pin , name from people where pin = :blk1.ot_ind;
select pin , name from people where pin = :blk1.ov_ind;
 
分享到:
评论

相关推荐

    SQL语句优化规则

    1.选用适合的ORACLE优化器。...3. 共享SQL语句。 4. 选择最有效率的表名顺序(只在基于规则的优化器中有效)。5. WHERE子句中的连接顺序。6.SELECT子句中避免使用 ‘ * ‘ ...(内部涵盖了非常多的优化规则)

    经典SQL语句大全

    10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1...

    通过分析SQL语句的执行计划优化SQL.doc

    判断SQL语句是否与共享内存中某一SQL相同Rowid ,Recursive SQL, Row Source ,Predicate Driving Table ,Probed Table等概念4种类型的索引扫描

    SQL语句优化 资料

    SQL语句优化,个人学习时候总结的东西 。还有几个网上找到的不错的文档。还的东西需要共享。

    老方块ORACLE SQL性能优化(全)教学PPT

    性能管理 性能问题 调整的方法 SQL优化机制 应用的调整 SQL语句的处理过程 共享SQL区域 SQL语句处理的阶段 共享游标 SQL编码标准 Oracle 优化器介绍 SQL Tunning Tips 优化Tools

    Oracle SQL 性能优化

    oracle sql 优 化 的 53 常 用 技 巧. 1. 选用适合的ORACLE优化器 2. 访问Table的方式 3. 共享SQL语句 -----

    SQL语句实现查询SQL Server内存使用状况

    SELECT type,--Clerk的类型 sum(virtual_memory_reserved_kb)as vm_Reserved_kb,--保留的内存...sum(shared_memory_reserved_kb)as sm_Reserved_kb,--共享的保留内存 sum(shared_memory_committed_kb)as sm_Committed_k

    ORACLE 优化sql语句提高oracle执行效率 .doc

    在平时的日常开发中,由于SQL语句使用不当,执行效率低下,现整理了文档供大家参考,尽可能帮忙新手,实现资源共享;

    oracle的sql优化

     *Sql语句中大量使用函数时候会导致很多索引无法使用上,要针对具体问题分析 4.其它  避免使用Select *,因为系统需要去帮你将*转换为所有的列名,这个需要额外去查询数据字典。  Count(1)和Count(*)差别不大。  ...

    EAS的DEP客户端脚本中执行select和update的sql语句的方法

    EAS二次开发中DEP在编辑或者列表界面写脚本时可调用的执行sql语句的方法。【本方法仅用于客户端代码中,如果是服务端代码,即对某实体进行DEP拓展,请参照官方出品DEP脚本指南】

    乐优商城数据库黑马57期mysql-sql创建-数据库

    乐优商城2018年最新57期的sql创建文件。因为资料不相符,所以在此分享给大家,有其他需要资料可以提出共享。注:此文件存储在百度云中提供下载。打开txt,复制到浏览器即可下载。

    weblogic session共享的sql语句_mysql

    weblogic session共享的sql语句_mysql 官方网站提供了DB2、oracle、sqlserver、 如果想要那些数据库,就去官网上看吧, 我这个是mysql的。 都别下错了!

    SQL-server2000数据库管理系统A.docx

    A、create table B、create C、create database D、drop 5、使用Transact-SQL语句创建数据库时,( )关键字是用于指定数据库的事务日志文件。 A、log on B、primary C、filename D、filegrowth 6、在SQL中,create...

    T-SQL打印杨辉三角

    老师出的一个变态的题目,用T-SQL语句打印的一个杨辉三角,共享给大家

    通过分析SQL语句的执行计划优化SQL(四)

    当你向ORACLE提交一个SQL语句,ORACLE会首先在共享内存中查找是否有相同的语句。这里需要注明的是,ORACLE对两者采取的是一种严格匹配,要达成共享,SQL语句必须完全相同。本文介绍了判断SQL语句是否与共享内存中某...

    根据数据库导出SQL语句

    使用此工具,可以轻松的将ACCESS数据库的数据生成对应的SQL语句,是数据在不同数据库之间更容易共享

    iBatis的动态SQL语句

    iBatis最全的动态SQL语句,你需要的都有,资源在于大家共享

    sql经典语句一部分

    经典SQL语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice ...

    数据库操作语句大全(sql)

    10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1...

    Oracle常用性能监控SQL语句

    从别处看到的Oracle常用性能监控SQL语句,不错。共享。

Global site tag (gtag.js) - Google Analytics