ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle只有当where子句中所有条件都使用"=:"才认为是使用绑定变量么?

oracle只有当where子句中所有条件都使用"=:"才认为是使用绑定变量么?

原创 Linux操作系统 作者:secooler 时间:2007-12-12 21:56:05 2 删除 编辑
oracle只有当where子句中所有条件都使用"=:"才认为是使用绑定变量么?

select col1,col2,col3,col4,col5
from tab1
where col1='1'
and col2 in ('000','001','003','004','005')
and col3 =:v1
/

在使用v$sqlarea中类似上面的语句出现了1万多次,应该能确认这样的语句是没有很好使用绑定变量吧。
我的疑问:
1.如果条件一和条件二的内容就是这样固定的,没有变化,只是第三个条件使用了"=:"形式,是不是oracle认为这样的SQL不能算是使用绑定变量,不会在shared pool中进行缓存?
2.是不是在where子句中每个条件都要是"=:"形式才可以?感觉oracle有点傻的说。
3.好多SQL语句都是通过众多服务拼凑出来的,可能不全是"=:"形式,那岂不是都修改?大家有遇到这样类似的问题么。
4.大家在处理这些没有很好使用绑定变量问题的时候都有哪些可行的方案呢。
5.例如就是是上面的结构,怎么写才能让oracle认为这个要被反复的使用,在shared pool中多停留呢。
6.对于or和in的条件子句应该如何调整呢。

关于绑定变量的理解还有待提高,还请朋友们多多帮助。


===============================================================

在各位老大的提示下,我终于明白我所提的问题描述和理解上有问题。

我使用的查询语句是:

select substb(sql_text,1,120),count(1)
from v$sqlarea
group by substb(sql_text,1,120)
having count(1)>400
order by count(1) desc
/

然后使用的v$sqltext_with_newlines查询到其中一个hash对应的SQL。
实际上对应的SQL有很多,我所写的结构只是其中的一个,在我全部列选所有SQL语句后,其后面的结构是不一样的,都是太长的SQL语句扰乱了我的思维(其实是水平有待提高)。在我把 substb(sql_text,1,120) 放大到 substb(sql_text,1,450) 后发现了一个问题,在450之后有好多like ***%'(***代表不同的值)结构的条件,所以SQL的样子不相同,当然hash_value都不一样了

类似结构是:
select col1,col2,col3,col4,col5
from tab1
where col1='1'
and col2 in ('000','001','003','004','005')
and col3 =:v1
and col4 like '***%'    ------------没有取出全部的SQL内容
/

问题提的不正确,请大家原谅,
目前发现了这些SQL语句的问题,应该将那些like后面的条件让应用人员进行调整。

但是还有一个问题:
如果结构就是
select col1,col2,col3,col4,col5
from tab1
where
col1='1'
and col2 in ('000','001','003','004','005')
and col3 =:v1
/
其中的条件
col1='1'
and col2 in ('000','001','003','004','005')
是固定不变的,没有写成"=:"的形式,在v$sqlarea中是不是应该只是出现一次,在这种情况下,这样的语句会被重用么?
换一种说法:是不是在v$sqlarea上取到的次数为1的那些SQL均会被ORACLE重用?
(个人认为是可以的)

有专门介绍ORACLE处理绑定变量机制方面的资料么。这方面还真需要好好学习学习。

[ 本帖最后由 secooler 于 2007-12-13 17:44 编辑 ]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/519536/viewspace-555639/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle ACE 总监,阿里云MVP,北京大学理学硕士,恩墨学院创始人,教育专家,中国区 Cloudera 首位官方授权大数据讲师,金牌培训专家,BDA大数据联盟创始人,OCM联盟创始人,ACCUG创始人、ACOUG核心专家,Blogger。

注册时间:2008-03-16

  • 博文量
    797
  • 访问量
    8009229