
的物理位置信息,ORACLE 采用索引(INDEX)实现了数据和存放数据的物理位置(ROWID)
之间的联系。通常索引提供了快速访问 ROWID 的方法,因此那些基于索引列的查询就可以
得到性能上的提高。
3、共享 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 语句必
须完全相同(包括空格,换行等)。
共享的语句必须满足三个条件:
1) 字符级的比较,当前被执行的语句和共享池中的语句必须完全相同。
例如:
SELECT * FROM EMP;
和下列每一个都不同:
SELECT * from EMP;
Select * From Emp;
SELECT* FROM EMP;
2) 两个语句所指的对象必须完全相同。
例如:
用户 对象名 如何访问
Jack sal_limit private synonym
Work_city public synonym
Plant_detail public synonym
Jill sal_limit private synonym
评论