Oracle数据库11g新特性:自适应游标与SQL计划管理
2008-12-16 13:03:23 来源:WEB开发网到目前为止,很多人都已经了解大量使用绑定变量来提高性能的方法;对于尚不清楚这种方法的用户,我将尽力以最简单的方式介绍该方法的核心概念。(同时,我还建议您访问 Tom Kyte 的 asktom.oracle.com.在那里,您将了解使用绑定变量改善 SQL 语句性能的重要性,以及如何在几种语言中使用这些变量。)
假定您的 CUSTOMERS 表拥有一个名为 STATE_CODE 的列,该列使用美国州名两位字母的缩写存储客户所在州的信息,如 CT、NY 等等。如果希望找出来自康涅狄格州 ('CT') 且购买次数达三次以上的客户的数量,您最可能执行以下查询:
select count(1)
from customers
where state_code = 'CT'
and times_purchased > 3;
当您执行上述查询时,Oracle 必须执行分析活动,为您执行的 SQL 语句生成执行计划。分析过后,即可执行查询。在概念上,分析与编译软件中的代码类似;如果您使用 C++ 编写代码,则不能在操作系统中运行这些代码 - 首先,您必须编译这些代码,使它们成为可执行文件。分析活动从 SQL 语句中生成可执行文件。
现在,假设另一位用户发布了如下所示的语句:
select count(1)
from customers
where state_code = 'NY'
and times_purchased > 3;
该语句几乎与上述查询完全相同,除了一点:搜索的 state_code 为 NY 而非 CT.理想情况下,分析过的代码与前一查询相同,且将在运行时应用文字值。但 Oracle 将查询的编写方式解释为不同的方式,因此必须再次对第二个查询进行分析。
假设查询按以下方式编写:
select count(1)
from customers
where state_code = <StateCode>
and times_purchased > 3;
第一个查询和第二个查询将分别传递 CT 和 NY 作为 <StateCode> 的值。此时,不必重新对查询进行分析。
- ››oracle 恢复误删除的表和误更新的表
- ››Oracle分页查询排序数据重复问题
- ››Oracle创建dblink报错:ORA-01017、ORA-02063解决
- ››Oracle 提高SQL执行效率的方法
- ››Oracle 动态查询,EXECUTE IMMEDIATE select into...
- ››Oracle 11g必须开启的服务及服务详细介绍
- ››oracle性能34条优化技巧
- ››oracle数据库生成随机数的函数
- ››Oracle 数据库表空间容量调整脚本
- ››oracle单库彻底删除干净的方法
- ››Oracle创建表空间、创建用户以及授权、查看权限
- ››oracle 中 UPDATE nowait 的使用方法
更多精彩
赞助商链接