sql语句优化之not in

多表关联想查a表中除去b表的可用not exists 效率比not in 更高

优化后的语句用时0.421秒

select john.*,
(case
when round((case john.sumcount
when 0 then
0
else
mycount * 100 / sumcount
end),
2) > 100 then
100
else
round((case john.sumcount
when 0 then
0
else
mycount * 100 / sumcount
end),
2)
end) lv
from (select '路径外' kind,
cp_id,
(select cp_node_name
from lcp_master_node n
where n.cp_id = o.cp_id
and n.cp_node_id = o.cp_node_id) node_name,
cp_node_id,
LOCAL_ORDER_TEXT,
LOCAL_ORDER_NO,
MEASURE,
IS_ANTIBIOTIC,
MEASURE_UNITS,
count(*) mycount,
(select count(*)
from (select count(*)
  from LCP_PATIENT_LOG_ORDER r
 where r.cp_id = '10896'
 group by patient_no)) sumcount
from LCP_PATIENT_LOG_ORDER o
where cp_id = '10896'
group by cp_id,
cp_node_id,
LOCAL_ORDER_TEXT,
LOCAL_ORDER_NO,
MEASURE,
IS_ANTIBIOTIC,
MEASURE_UNITS) john
where NOT EXISTS
(select *
from lcp_node_order_item i
where i.cp_id = john.cp_id
and i.cp_node_id = john.cp_node_id
and i.CP_NODE_ORDER_TEXT = john.local_order_text)
order by cp_node_id, mycount desc;

  

转载于:https://www.cnblogs.com/wuhailong/p/5089199.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值