两表关联查询后加载速度非常慢问题求教

流程访问权限查询.cpt

ORACLE数据库有两张表,A表总共有600多条记录,B表有350多条记录,两张表通过left join关联查询,通过SQL Developer工具执行查询都正常,但是使用帆软报表加载数据大约需要15秒左右才能显示数据。

帆软报表中将关联的B表删除,此时报表加载速度就正常,大约1秒左右就加载完成了,查看数据库两张表关联字段都有建立索引了,求大神帮忙分析下看可能是什么问题,谢谢!

下面屏蔽的两行就是B表,只要屏蔽掉就1秒内加载完成,加上就要15秒

select wb.id,wt.typename as 流程分类,

--uf.bm as 流程管理部门,uf.fzr as 流程负责人,

wb.workflowname as 流程名称,wg.type as 类型,wg.signorder as 会签关系,wg.objid as 对象ID,wg.level_n,wg.level2_n,wg.bhxj as 是否包含下级,wg.jobfield as 岗位对应级别id,hc1.subcompanyname as 岗位指定分部,hd1.departmentname as 岗位指定部门,hc.subcompanyname as 分部,hd.departmentname as 部门,hrj.jobtitlename as 岗位,hrs.rolesmark as 角色,hr.lastname as 人力资源  from workflow_base wb  

left join workflow_nodelink wn on wn.workflowid=wb.id

left join workflow_nodebase wnb on wnb.id=wn.nodeid 

left join workflow_nodegroup wng on wn.nodeid=wng.nodeid

left join workflow_groupdetail wg on wg.groupid=wng.id 

left join hrmresource hr on hr.id=wg.objid and wg.type=3

left join hrmsubcompany hc on hc.id=wg.objid and wg.type=30

left join hrmdepartment hd  on hd.id=wg.objid and wg.type=1

left join hrmsubcompany hc1 on  hc1.id = wg.jobfield and wg.type = 58 and wg.level_n = 1

left join hrmdepartment hd1 on  hd1.id = wg.jobfield and wg.type = 58 and wg.level_n = 0

left join hrmroles hrs on hrs.id=wg.objid  and wg.type=2

left join HrmJobTitles hrj on hrj.id = wg.jobobj and wg.type = 58

left join workflow_type wt on wt.id = wb.workflowtype

--left join uf_LCBMFZR uf on uf.lcid = wb.id

where wb.isvalid=1 and --流程是否有效判断

wnb.isstart=1  --判断是否创建节点

${IF(LEN(lcmc)==0,""," and wb.workflowname like '%" + lcmc + "%'")}--流程名称查询

order by wg.id

---------------------------------------------

将屏蔽的表单独建立一个数据集,通过条件过滤来显示,整个报表加载效率提升了,大概5秒左右可以打开报表,查看日志也是uf_lcbmfzr这张表执行的比较慢

image.png

FineReport 倔强的咸鱼 发布于 2021-4-14 16:19 (编辑于 2021-4-15 09:15)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
0
Z4u3z1Lv6专家互助
发布于2021-4-14 16:30(编辑于 2021-4-14 16:32)

这么多表还叫2张表.......

SQL Developer工具执行查询都正常那就只有是你报表上设置的问题,先备份一个报表再取消报表上的筛选、动态参数传入、条件属性等等预览试试。如果预览正常再逐个加回去,加一个预览一次看效果找出问题

  • 倔强的咸鱼 倔强的咸鱼(提问者) 1、就是取消屏蔽的那张表就正常了,而且关联条件也只和主表做关联,所以可以排查其他关联表问题 2、我把其他关联查询都取消了,只保留主表和有问题的那张表,也还是存在问题,只是加载速度会快一点,大概也要5秒才能全部加载完 不知道是否还要其他方向可以看看,我也查询了B表,里面关联字段没用重复的情况
    2021-04-14 16:45 
  • Z4u3z1 Z4u3z1 回复 倔强的咸鱼(提问者) 首先要确认一个事情:SQL Developer中执行的语句和你报表上执行的语句是一模一样的么?注意查询条件也一模一样
    2021-04-14 16:50 
  • 倔强的咸鱼 倔强的咸鱼(提问者) 回复 Z4u3z1 一模一样,我单独建立数据集,主表虽然关联很多leftjoin,但是速度是很快的,还是B表执行很慢。。。奇怪了
    2021-04-14 16:53 
  • Z4u3z1 Z4u3z1 回复 倔强的咸鱼(提问者) 上传模板
    2021-04-14 16:59 
  • 倔强的咸鱼 倔强的咸鱼(提问者) 回复 Z4u3z1 上传了
    2021-04-14 17:03 
最佳回答
0
free_zzLv6中级互助
发布于2021-4-14 16:21

导出模板数据看看

最佳回答
0
caryzhangbingLv4见习互助
发布于2021-4-14 16:22

sql优化了没?

最佳回答
0
ok航Lv2见习互助
发布于2021-4-14 16:24(编辑于 2021-4-14 17:07)

uf_LCBMFZR 这张表中的 lcid 是不是有很多重复的,如果有重复的,会导致关联之后数据量增大很多。尝试对 uf_LCBMFZR  进行distinct操作,减少数据量。

最佳回答
0
RFLv5初级互助
发布于2021-4-14 16:31

可以查看下执行计划,使用explain看下哪一步消耗的时间比较长,定位到问题再解决

  • 5关注人数
  • 742浏览人数
  • 最后回答于:2021-4-15 09:15
    请选择关闭问题的原因
    确定 取消
    返回顶部