首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何提高SQL查询的性能?

如何提高SQL查询的性能?
EN

Stack Overflow用户
提问于 2018-11-09 18:42:44
回答 2查看 75关注 0票数 0

我有Sql查询,由于它影响了包的性能。ln_trans_type_id是声明的变量。

代码语言:javascript
复制
UPDATE invoice_table xai 
  SET process_flag = 'E', 
      error_description = 'Invoice Number Does not Exists ' 
WHERE xai.process_flag = 'N' 
AND NOT EXISTS (  
    SELECT 1 
    FROM ra_customer_trx_all rct 
    WHERE rct.org_id = 1001 
    AND rct.trx_number = xai.invoice_number 
    AND rct.cust_trx_type_id = ln_trans_type_id
);

敬请审阅并给予建议。

EN

回答 2

Stack Overflow用户

发布于 2018-11-09 19:02:16

如果您在包中声明一个变量(作为tempVar),并在稍后传递以更新

代码语言:javascript
复制
 SELECT 1 into tempVar FROM 
 ra_customer_trx_all rct , invoice_table xai  
 WHERE rct.org_id = 1001 AND rct.trx_number = xai.invoice_number AND rct.cust_trx_type_id = ln_trans_type_id
票数 0
EN

Stack Overflow用户

发布于 2018-11-09 19:18:02

如果没有执行计划,我们只能猜测。您应该将性能与NOT IN进行比较,但要确保子查询不返回任何空值,否则不会得到任何结果。

代码语言:javascript
复制
UPDATE invoice_table xai 
  SET process_flag = 'E', 
      error_description = 'Invoice Number Does not Exists ' 
WHERE xai.process_flag = 'N' 
AND  xai.invoice_number 
           NOT IN (  
    SELECT rct.trx_number 
    FROM ra_customer_trx_all rct 
    WHERE rct.org_id = 2326 
    AND  rct.trx_number is not null -- important!
    AND rct.cust_trx_type_id = ln_trans_type_id
);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53224173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档