sql = "begin "
+ "delete mtgSelectedContactext where siteid = ? and confid=? and uuid in"
+ "(select uuid from mtgSelectedContact where siteID = ? AND confID = ?"
+ "end;";
这是一条SQL语句。
形式 delete Table where column in(select * from Table where ...),
当子查询结果集超过1024条可能会出现潜在的问题,不知这里该怎么修改,
好像可以写个procedure,可是我不太会,不知哪位大虾可以指点指点?
先谢谢了:)
+ "delete mtgSelectedContactext where siteid = ? and confid=? and uuid in"
+ "(select uuid from mtgSelectedContact where siteID = ? AND confID = ?"
+ "end;";
这是一条SQL语句。
形式 delete Table where column in(select * from Table where ...),
当子查询结果集超过1024条可能会出现潜在的问题,不知这里该怎么修改,
好像可以写个procedure,可是我不太会,不知哪位大虾可以指点指点?
先谢谢了:)
解决方案 »
- RMAN连接数据库时提示:protocol adator error
- 创建的pfile只有一行数据,求解释
- oracle 10.2.1 64位 windows server 2003 64位操作系统的问题
- ORA-04021:执行存储过程报错
- ORACLE下用一张表的一个字段去更新另一张表的一个字段
- informix sql语法如何转换成oracle sql语法?
- 可以在远程同义词表上建触发器吗?怎么建,和本地表一样吗???
- 如何判断一个存储过程是否存在
- 数据库的设计的问题
- 为什么同一个方法有时快有时慢呢?oracle 11g
- asp.net+oracle开发项目,数据库session超值,帮帮忙,急!~高分
- 请问Oracle里面可以Create DOMAIN吗?
可以使用下面的SQL:
------------------delete mtgSelectedContactext
where siteid = ?
and confid=?
and exists(
select 1
from mtgSelectedContact
where siteID = ?
AND confID = ?
and uuid = mtgSelectedContactext.uuid
)
mtgSelectedContactext表的siteid 和 confid好像和
mtgSelectedContact 表的 siteid 和 confid是等于关系,如果这样
可以这样写:
-----------------------------------
delete mtgSelectedContactext
where exists(
select 1
from mtgSelectedContact
where siteID = mtgSelectedContactext.siteID
AND confID = mtgSelectedContactext.confID
and uuid = mtgSelectedContactext.uuid
)在siteID ,confID ,uuid 创建Index。
这样不知怎么样?
-----------------------------------
delete mtgSelectedContact
where uuid
between
(select min(uuid) from mtgSelectedContact where siteid=? and confid=? and usertype=?)
and
(select max(uuid) from mtgSelectedContact where siteid=? and confid=? and usertype=?)
SQL不能那样写,那样写的话就把所有相同的siteid and confid都删除了,传过来的siteid and confid就没有意义了,right?
exists也看什么情况,如果Index正确的了,绝对比In快,
不过Oralce网站上也有说明,在特定环境下,in比exists快。
我就遇到这个问题,exists需要10分钟,in 50秒就可以,
主要是嵌套表内数据命中率比较低。如果可以提供执行计划,这样才能找到真正原因。