易截截图软件、单文件、免安装、纯绿色、仅160KB

oracle procedure 实际开发遇到的问题

有两张表
1.第一张,数量百万级
id  number 主键
name varchar(50)
2.第二张,数量1万级
id number 主键
deletename varchar(50)


现在的问题是要写一个存储过程,删除第一张表中的name字段有在第二张表deletename中出现的记录,
怎么写性能最高啊,大家集思广义啊,小弟在此谢过了......
delete a
where exist
(
select 1
from b
where a.name=b.deletename

)

引用
delete a
where exist
(
select 1
from b
where a.name=b.deletename

)

select 1 是什么意思啊

select 1
表示出来的结果无所谓的
只有匹配值就返回

只是习惯写法,其实你可以写任何值,不影响结果的

1.
delete a
where exist
(
select 1
from b
where a.name=b.deletename

)
2.
delete a
where a.name in 
(
select b.deletename
from b

这两个,哪个性能高点


这种数据量EXIST应该会快点


delete from a
where a.name in
(
select deletename
from a,b
where a.name=b.deletename
);


delete a
where exist
(
select 1
from b
where a.name=b.deletename

)
快些

  在实际的项目应用中应该尽量避免使用 in 和 no


相关问答:

PHP 连接Oracle 出错

<?php
  getenv("ORACLE_HOME");
  $conn=ocilogon("test","test","test_db");
  if($conn)  
  echo success;  
&nb ......

jdbc 大批量更新 oracle数据库中的数据

我用的是PreparedStatement来发送提交,并且数据量非常庞大。
一次需要执行8900多条更新语句,也就是Update语句。
我试过分开,一部分一部分来执行提交,但还是一样的速度慢,而且越执行越慢。实在是没有什么 ......

请教关于oracle的自定义函数的问题

create or replace function GetWorkBeginTime()
  return date is
  myDate    date;
begin
  myDate := trunc(sysdate-1)+8/24;
  return myDate;
end;

......

oracle中纵向转横向

有一表如下:
      ID    姓名    科目    成绩 
      1      张三    语文    80  ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号