为了账号安全,请及时绑定邮箱和手机立即绑定

求助 SQL 查询太慢

求助 SQL 查询太慢

慕慕森 2019-05-03 22:07:18
SELECT C.ID,C.CATYPE,C.ZZBH,C.HZ,C.BFRQ,C.JZRQ,C.SAVETYPE,C.DOCID,C.FBDOCID,(CASE C.SAVETYPEWHEN '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.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(数据量大) ,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'因为C表 数据量太大 导致查询慢 请问怎么优化啊
查看完整描述

2 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

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

查看完整回答
反对 回复 2019-05-03
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

加个索引试试

优化路径,具体的忘了

上面的回答可以,不过我觉得还有更简单的方法:
select aid, count(distinct uid) from 表名 group by aid
这是sqlserver 的写法。。。

查看完整回答
反对 回复 2019-05-03
  • 2 回答
  • 0 关注
  • 343 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信