查詢是如..不是在同一個表中的條款需要時間在oracle中
select deviceid,devicename,totalbytes,'Others' as protocolgroup from (
select d.deviceid,d.name as devicename,sum(bytes) as totalbytes from tblmainallowedtraffic_5min b,tbldevice d
WHERE ( B.APPID IN ('C070100126-VW717U','C018600068-GEF3O6','C045701665-9B6S1A','C026100710-36NPQE','C016801597-V1Z8IM'))
and proto_group not in (select proto_group from (select proto_group,sum(bytes) from
TBLMAINALLOWEDTRAFFIC_5MIN B WHERE ( B.APPID IN ('C070100126-VW717U','C018600068-GEF3O6','C045701665-9B6S1A',
'C026100710-36NPQE','C016801597-V1Z8IM')) AND "5mintime" >='04-APR-12 12.00.00.000000 AM' AND
"5mintime" <='04-APR-12 11.59.59.000000 PM' group by proto_group order by sum(bytes) desc) WHERE ROWNUM <=5)
AND B.APPID=D.APPID AND "5mintime" >='04-APR-12 12.00.00.000000 AM' AND "5mintime" <='04-APR-12 11.59.59.000000 PM'
GROUP BY D.APPID,D.DEVICEID,D.NAME)
order by protocolgroup desc, totalbytes desc
在解釋計劃它說..
3 - 過濾器(NOT EXISTS(不可行))
如果更改與靜態內部查詢結果中的上述查詢,輸出來更快:
select deviceid,devicename,totalbytes,'Others' as protocolgroup from (
select d.deviceid,d.name as devicename,sum(bytes) as totalbytes from tblmainallowedtraffic_5min b,tbldevice d
WHERE ( B.APPID IN ('C070100126-VW717U','C018600068-GEF3O6','C045701665-9B6S1A','C026100710-36NPQE','C016801597-V1Z8IM'))
and proto_group not in ('POP3','HTTP Request Response','Web','GET HTTP DATA MORE THAN 976 KB','SMTP')
AND B.APPID=D.APPID AND "5mintime" >='04-APR-12 12.00.00.000000 AM' AND "5mintime" <='04-APR-12 11.59.59.000000 PM'
GROUP BY D.APPID,D.DEVICEID,D.NAME)
order by protocolgroup desc, totalbytes desc
所以不存在子句是在同一個表上創建的問題..
你可以給這個想法嗎?
您可以使用[即時SQL格式化程序(http://www.dpriver.com/pp/sqlformat .htm)在線工具來格式化sql。 – 2012-04-05 11:16:42