求助 SQL 查询太慢

SELECT C.ID,
C.CATYPE,
C.ZZBH,
C.HZ,
C.BFRQ,
C.JZRQ,
C.SAVETYPE,
C.DOCID,
C.FBDOCID,
(CASE C.SAVETYPE
WHEN '2' THEN
'已签发'
ELSE
'未签发'
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.CID
FROM(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(数据量大) ,
T_INS_BUSINESSINFO B,
T_INS_BUSINESS_EXT E
WHERE B.BSNUM = C.YWID(+)
AND B.BSNUM = E.BSNUM
AND B.SFCZ = '1'
AND DECODE(B.STATUS,'2',DECODE(C.TYPE,'0','1','0'),B.STATUS)='1' 
AND( B.PERMID in
(SELECT M.SXID
FROM T_FLOW_PERM M, T_FLOW_GROUP_NODE N, T_FLOW_GROUP_HANDLER H
WHERE M.GID = H.GID
AND M.GID = N.GID
AND N.NODEID = H.NODEID
AND H.NODEID = 'ZZQF'
AND H.HANDLER IN ('20170223144725077357', '220015988')
) or b.deptid='220015988') AND nvl(C.SAVETYPE,'1')='1'

因为C表 数据量太大 导致查询慢 请问怎么优化啊

慕慕森
浏览 344回答 2
2回答

湖上湖

C表临时生成还大,然后再去查询一定会减慢速度,而且几乎没有能走索引或者其他条件的通道(一堆左右链接decode)。语句优化几乎做不了什么,试试看查询结构优化吧,比如C建立为物化视图或者一张表等等,语句这块做不了什么了。

芜湖不芜

加个索引试试优化路径,具体的忘了上面的回答可以,不过我觉得还有更简单的方法:select aid, count(distinct uid) from 表名 group by aid这是sqlserver 的写法。。。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL