谁帮我看看这两句SQL语句效率那个高

[复制链接]
查看11 | 回复8 | 2012-9-7 16:45:04 | 显示全部楼层 |阅读模式
第一个
DECLARE
TYPE T_Endorsement_No IS TABLE OF Auto_Active_Endorse_Snapshot.Endorsement_No %TYPE;
TYPE T_Policy_No IS TABLE OF Auto_Active_Policy_Snapshot.Policy_No %TYPE;
c_Endorsement_No T_Endorsement_No := T_Endorsement_No();
c_Policy_No
T_Policy_No := T_Policy_No();
CURSOR cur_Delete_Data IS
SELECT a.Policy_No, a.Endorsement_No
FROM Auto_Agreement_Request_I a
WHERE a.Branch_Company_Code = 7050100
AND a.Planned_End_Date >= a.Requested_Date
AND a.Signature_Date >= TO_DATE('2006-01-01', 'YYYY-MM-DD');
BEGIN
OPEN cur_Delete_Data;
FETCH cur_Delete_Data BULK COLLECT
INTO c_Policy_No, c_Endorsement_No;
FORALL i IN c_Policy_No.FIRST .. c_Policy_No.LAST
DELETE FROM Auto_Active_Endorse_Snapshot
WHERE Branch_Company_Code = 7050100
AND Policy_No = c_Policy_No(i)
AND Endorsement_No = c_Endorsement_No(i);
CLOSE cur_Delete_Data;
c_Policy_No.DELETE();
c_Endorsement_No.DELETE();
END;
第二个
DELETE /*+ Parallel(t 4) */ AUTO_ACTIVE_ENDORSE_SNAPSHOT T WHERE EXISTS (SELECT1
FROM AUTO_AGREEMENT_REQUEST_I A WHERE A.BRANCH_COMPANY_CODE = 7050100 AND A.PLANNED_END_DATE >= A.REQUESTED_DATE AND A.SIGNATURE_DATE >= TO_DATE('2006-01-01', 'YYYY-MM-DD') AND T.POLICY_NO = A.POLICY_NO AND T.ENDORSEMENT_NO = A.ENDORSEMENT_NO AND T.BRANCH_COMPANY_CODE = 7050100)

回复

使用道具 举报

千问 | 2012-9-7 16:45:04 | 显示全部楼层
tom说,能用一条SQL搞定的就不要用存储过程
回复

使用道具 举报

千问 | 2012-9-7 16:45:04 | 显示全部楼层
tom。。。。。ask tom。。。。
回复

使用道具 举报

千问 | 2012-9-7 16:45:04 | 显示全部楼层
如果要delete数据量是非常大的话, 使用批量的方法更高效!
回复

使用道具 举报

千问 | 2012-9-7 16:45:04 | 显示全部楼层
bell6248 发表于 2012-9-18 16:32
如果要delete数据量是非常大的话, 使用批量的方法更高效!

如果数据量大的话 你是指第一个更有效率?
回复

使用道具 举报

千问 | 2012-9-7 16:45:04 | 显示全部楼层
dennis1126 发表于 2012-9-18 17:44
如果数据量大的话 你是指第一个更有效率?

对, 你可以测试对比一下
回复

使用道具 举报

千问 | 2012-9-7 16:45:04 | 显示全部楼层
删除大量数据时且同时有其它的程序对这个表进行操作时你用一种方法要好,就象别人说的你可以测试一下
回复

使用道具 举报

千问 | 2012-9-7 16:45:04 | 显示全部楼层
其实两个都是过程化思维,性能都不会特别,如果两个性能不能达到lz要求,请考虑用先查出rowid,再通过rowid删除,性能应该能快很多
回复

使用道具 举报

千问 | 2012-9-7 16:45:04 | 显示全部楼层
学习!路过
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行