帆软查询效率单选一个很快,但多选就很慢,有没有什么优化的办法,求助各位大佬!!!

${if(len(shop) = 0,""," and shop_name_s in('" +replace(shop, ",", "','") + "')") }${if(len(pline) = 0,""," and pline_name_s in('" +replace(pline, ",", "','") + "')") }

FineReport 邦尼two 发布于 2022-10-28 15:12
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
CD20160914Lv8专家互助
发布于2022-10-28 15:13

使用EXISTS的方式替换看一下。再看一下执行计划吧。in没有走索引了

  • 邦尼two 邦尼two(提问者) 怎么写,替换进去报错了
    2022-10-28 15:22 
  • CD20160914 CD20160914 回复 邦尼two(提问者) EXISTS是要结合表使用的。。不是直接用。你的表有多少数据。你多个的时候有多少大概?还有看一下执行计划呀。在数据库查询要多久
    2022-10-28 15:24 
  • 邦尼two 邦尼two(提问者) 回复 CD20160914 万级,多选要100s左右
    2022-10-28 15:27 
  • CD20160914 CD20160914 回复 邦尼two(提问者) 你在数据库都要100S那还是要优化sql了。不能用in。要用EXISTS或者表关联了。把你参数里面的值全部放在一个表中。如果参数有值就join对应的表关联
    2022-10-28 16:11 
最佳回答
0
天影Lv3见习互助
发布于2022-10-28 16:10(编辑于 2022-10-28 16:11)

用这个

${if(len(shop)==0,"","and ("+JOINARRAY(MAPARRAY(shop, "find_in_set('"+item+"',shop_name_s)"),' or ')+")")}

并且把shop的控件返回类型换成“数组”

  • 3关注人数
  • 248浏览人数
  • 最后回答于:2022-10-28 16:11
    请选择关闭问题的原因
    确定 取消
    返回顶部