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
)
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
相关问答:
日前用oci函数查询oracle数据时出现个问题,就是在查询到date类型的数据时,使用pl/sql 查询oracle库中的数据显示是
2009-9-29 12:12:12
但是通过语句select * from tablename 查询,使用oci_fetch_array() ......
能否用语句实现。而不是现成的工具?
楼上的兄弟可以详细一些吗?
祝你节日快乐!哈哈
节日快乐
SQL code:
一. 导出工具 exp
1. 它是操作系统下一个可执行的文件 存放目录/ORACLE_HOME/bin
......
delphi 怎么将oracle的long raw 字段值 导入blob字段
http://blog.csdn.net/zxf_feng/archive/2008/12/21/3571961.aspx
看看这个
引用
vStream := TMemorySt ......
create or replace function GetWorkBeginTime()
return date is
myDate date;
begin
myDate := trunc(sysdate-1)+8/24;
return myDate;
end;
......
有一表如下:
ID 姓名 科目 成绩
1 张三 语文 80 ......