Oracle读书摘录1---为什么要书写绑定变量的SQL语句

本文探讨了在Oracle数据库中使用绑定变量对于性能和可扩缩性的影响。硬解析包含常量的SQL语句会消耗更多资源,降低系统性能,而绑定变量允许查询计划的重用,减少资源消耗和闩定竞争。通过对比使用绑定变量和不使用的情况,展示了绑定变量在性能提升方面的显著效果。
摘要由CSDN通过智能技术生成

是否使用绑定变量这是导致Oracle性能问题的一个主要原因,也是阻碍可扩缩性的一个重要因素。

Oracle 将已解析、已编译的SQL 连同其他内容存储在共享池(shared pool)中,这是系统全局区(System

Global Area ,SGA)中一个非常重要的共享内存结构。这个结构能完成“平滑”操作,但有一个前提,要求开发人员

在大多数情况下都会使用绑定变量。如果你确实想让Oracle 缓慢地运行,甚至几近停顿,只要根本不使用绑定变量就

可以办到。

绑定变量(bind variable)是查询中的一个占位符。例如,要获取员工123 的相应记录,可以使用

以下查询:

select * from emp where empno = 123;

或者,也可以将绑定变量:empno 设置为123,并执行以下查询:

select * from emp where empno = :empno;

在典型的系统中,你可能只查询一次员工123,然后不再查询这个员工。之后,你可能会查询员工456,

然后是员工789,如此等等。如果在查询中使用直接量(常量),那么每个查询都将是一个全新的查询,在

数据库看来以前从未见过,必须对查询进行解析、限定(命名解析)、安全性检查、优化等。简单地讲,就

是你执行的每条不同的语句都要在执行时进行编译。

第二个查询使用了一个绑定变量:empno,变量值在查询执行时提供。这个查询只编译一次,随后会把

查询计划存储在一个共享池(库缓存)中,以便以后获取和重用这个查询计划。以上两个查询在性能和可

扩缩性方面有很大差别,甚至可以说有天壤之别。

从前面的描述应该能清楚地看到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值