SELECT C.ID,C.CATYPE,C.ZZBH,C.HZ,C.BFRQ,C.JZRQ,C.SAVETYPE,C.DOCID,C.FBDOCID,(CASE C.SAVETYPEWHEN '2' THEN'已簽發(fā)'ELSE'未簽發(fā)'END) STYPE,C.CREATOR USERID,B.BSNUM,B.SXZXNAME,B.PERMID AS SXID,B.APPNAME APPNAME,B.APPCOMPANY APPCOMPANY,B.PROJECTNAME,B.XZXK,B.DEPTID,B.BJTYPE,B.ENDFORTIME,B.DATAID DATAID,B.FLOWID,E.GROUPID,E.GROUPNAME,E.NETWORKID,E.YWGSD,B.STATUS,C.TYPE,C.CIDFROM(SELECT CI.*,DECODE(CI.CREATEDATE,NULL,'0',F.TYPE) TYPE FROM T_SHARE_CERTIFICATEINSTANCE CI LEFT JOIN T_SYS_CERTIFICATECONFIG F ON CI.CID=F.ID )C(數(shù)據(jù)量大) ,T_INS_BUSINESSINFO B,T_INS_BUSINESS_EXT EWHERE B.BSNUM = C.YWID(+)AND B.BSNUM = E.BSNUMAND B.SFCZ = '1'AND DECODE(B.STATUS,'2',DECODE(C.TYPE,'0','1','0'),B.STATUS)='1' AND( B.PERMID in(SELECT M.SXIDFROM T_FLOW_PERM M, T_FLOW_GROUP_NODE N, T_FLOW_GROUP_HANDLER HWHERE M.GID = H.GIDAND M.GID = N.GIDAND N.NODEID = H.NODEIDAND H.NODEID = 'ZZQF'AND H.HANDLER IN ('20170223144725077357', '220015988')) or b.deptid='220015988') AND nvl(C.SAVETYPE,'1')='1'因?yàn)镃表 數(shù)據(jù)量太大 導(dǎo)致查詢慢 請問怎么優(yōu)化啊
2 回答

湖上湖
TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個贊
C表臨時生成還大,然后再去查詢一定會減慢速度,而且?guī)缀鯖]有能走索引或者其他條件的通道(一堆左右鏈接decode)。
語句優(yōu)化幾乎做不了什么,試試看查詢結(jié)構(gòu)優(yōu)化吧,比如C建立為物化視圖或者一張表等等,語句這塊做不了什么了。

蕪湖不蕪
TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個贊
加個索引試試
優(yōu)化路徑,具體的忘了
上面的回答可以,不過我覺得還有更簡單的方法:
select aid, count(distinct uid) from 表名 group by aid
這是sqlserver 的寫法。。。
添加回答
舉報
0/150
提交
取消