Oracle 对共享 SQL 语句采用严格匹配策略,要求语句完全相同(包括空格、换行符)。要实现共享,语句必须满足以下条件:
- 字符级比较:待执行语句与共享池中的语句必须完全一致。
- 对象相同:语句操作的数据库对象必须相同。
- 绑定变量相同:语句中必须使用相同名称的绑定变量。
例如,以下第一组语句可以共享,而第二组语句则不行,即使在运行时绑定变量的值相同:
可共享组:
- select pin, name from people where pin = :blk1.pin
- select pin, name from people where pin = :blk1.pin
不可共享组:
- select pin, name from people where pin = :blk1.ot_jnd
- select pin, name from people where pin = :blk1.ov_jnd