解决方案 »
- plsql developer的test窗口设不了断点,只有bookmark,求解
- ORACLE远程访问sqlserver2000数据库,无法调用自定义函数和存储过程
- Oracle一编译存储过程或触发器就会断开~查询无碍~特此求助
- 机器换了ip后,执行conn /as sysdba时遇到ORA_01031错误
- 求助拼sql展现想要的结果集
- 监听无法启动
- 关于NVL函数的一个奇怪之处
- .ora文件中的global_names=ture或false是什么意思?
- 怎样获取ORACLE数据库用户的权限及密码?
- SQL Developer建立连接错误
- 这样的sql语句怎么处理比较好呢??
- oracle 视图写法 性能区别
| 11 | INDEX FAST FULL SCAN | IDX_IF_KC01_FROMNUMBER | 44M| 901M| | 54599 (1)| 00:10:56 |
占用了比较多的资源,那么调优的时候是要从这个地方入手吗?
-- 变换成分别过滤后连接,应该比每个明细都用主表进行EXISTS判断要好
SELECT F.storerkey,
F.sku,
F.lot,
F.loc,
F.id,
SUM (F.qty) AS qty
FROM (SELECT D.orderkey,
D.Storerkey,
D.sku,
D.lot,
D.Loc,
D.ID,
D.qty,
D.adddate
FROM PICKDETAIL D
WHERE -- 最好变换成 Adddate > .. AND Adddate < .. 的形式,可以利用 Adddate 上的索引
(D.Adddate + INTERVAL '8' HOUR) > TO_DATE (TO_CHAR (SYSDATE - 7, 'YYYY-MM-DD')
|| ' 07:55:00',
'YYYY-MM-DD HH24:MI:SS')
AND (D.Adddate + INTERVAL '8' HOUR) < SYSDATE - INTERVAL '3' MINUTE
) F
JOIN (
SELECT ORDERKEY,
STORERKEY
FROM ORDERS
WHERE OHTYPE = 3
AND Storerkey = 'VWPL'
-- NOT EXISTS 在主表这里判断,并且两个表的判断分开
AND NOT EXISTS (SELECT 1
FROM wh1.IF_kc01
WHERE fromnumber = ORDERS.EXTERNORDERKEY)
AND NOT EXISTS (SELECT 1
FROM wh1.IF_kc02
WHERE barcode = ORDERS.EXTERNORDERKEY)
) E
ON E.Storerkey = F.Storerkey
AND E.Orderkey = F.ORDERKEY
GROUP BY F.storerkey,
F.sku,
F.lot,
F.loc,
F.id
不好意思啊,我还得需要时间消化一下,不是干开发的,对SQL不熟悉,我慢慢看一下,先谢谢楼上二位。看来对于SQL优化我还有很多路要走。不是一个两个个例能快速提升自己的