oracle select查询慢,从select结果集中查询太慢
有一個查詢兩個表中記錄是否匹配的查詢
select*? ?from
(SELECT
(
CASE? ?WHEN? ?EXISTS
(
SELECT? ?*? ?FROM? ?CLEAR.TC_HIS_FTR_MATCH? ?n
WHERE? ?m.TRADE_DATE? ?=? ?n.TRADE_DATE
AND? ?m.MATCH_NO? ?=? ?TO_NUMBER(n.MATCH_NO)
AND? ?((m.BS_FLAG? ?=? ?'買'? ?AND? ?n.BS_FLAG? ?=? ?1)
OR? ?(m.BS_FLAG? ?=? ?'賣'? ?AND? ?n.BS_FLAG? ?=? ?3))
AND? ?m.MEMBER_ID? ?=? ?n.MEMBER_ID
AND? ?m.CLIENT_ID? ?=? ?n.CLIENT_ID
AND? ?m.CONTRACT_ID? ?=? ?n.CONTRACT_ID
AND? ?m.QTY? ?=? ?n.QTY
AND? ?m.PRICE? ?=? ?n.PRICE
AND? ?m.MATCH_TIME? ?=? ?n.MATCH_TIME
AND? ?((m.EO_FLAG? ?=? ?'開倉'? ?AND? ???n.EO_FLAG? ?=? ?1)
OR? ?(m.EO_FLAG? ?=? ?'平倉'? ?AND? ???(n.EO_FLAG? ?=? ?2OR? ?n.EO_FLAG? ?=? ?4))
OR? ?(m.EO_FLAG? ?=? ?'強減'? ?AND? ???n.EO_FLAG? ?=? ?3)
OR? ?(m.EO_FLAG? ?=? ?'強平'? ?AND? ???n.EO_FLAG? ?=? ?4))
AND? ?n.TRADE_DATE? ?=? ?'20071211'
)? ?THEN? ?1
ELSE? ?2? ?END
)? ?AS? ?MATCH_FLAG
FROM? ?CLEAR.TC_ORIGIN_MATCH? ?m
WHERE? ?m.TRADE_DATE? ?=? ?'20071211'
)where? ?MATCH_FLAG=2;
)
case的作用是如果匹配則為1,如果不匹配則為2.
查詢的結(jié)果集中有約30萬條數(shù)據(jù),從中找出MATCH_FLAG為2的很慢。
也就是這樣的一個select結(jié)果集,大概幾十萬條的數(shù)據(jù),其中只有幾條或者沒有,是自己需要查詢出來的(MATCH_FLAG為2的記錄),怎么把它們最快的找出來呢?謝謝
總結(jié)
以上是生活随笔為你收集整理的oracle select查询慢,从select结果集中查询太慢的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UNECE发布疫情后减少城市汽车使用指南
- 下一篇: Scratch软件编程等级考试二级——2