请SQL大神解惑

SQLserver:

declare @mdmc nvarchar(50) ='江北店'

select ta.mdmc,ta.louceng,ta.spid,ta.spmc from

(select md,mdmc,louceng,spid,spmc from zg_sysinfo where mdmc=@mdmc ) ta

left join

(select mdmc,loudong,louceng,quyu,spid,spmc,sum(xsze)xsze from view_xshb

where rq>='2023-01-25'

and rq<='2023-02-08'

group by mdmc,loudong,louceng,quyu,spid,spmc

 ) tb

on ta.mdmc=tb.mdmc  and ta.louceng=tb.louceng and ta.spid=tb.spid

where tb.xsze is null

--说明:zg_sysinfo  700条记录,视图view_xshb  20万条记录。

--declare 定义一个参数mdmc,把这个值“江北店”赋给他 where mdmc=@mdmc 秒出结果。

但是为什么我用where mdmc='江北店' 这样执行要50秒。

这有什么区别,不能这么写吗?

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

如果是SqlServer 改成

where mdmc=''+CONVERT(NVARCHAR(100),@mdmc+'' 试试

  • ysbin ysbin(提问者) where mdmc=@mdmc这样写秒出结果,为什么用where mdmc=‘江北店\' 这样就要50 秒,为什么呢?
    2023-02-10 09:13 
  • Z4u3z1 Z4u3z1 回复 ysbin(提问者) 猜测前面没引号需要数据库自己判断并进行隐式转化消耗了时间。你可以对比一下他们的执行计划
    2023-02-10 09:18 
  • 1关注人数
  • 204浏览人数
  • 最后回答于:2023-2-10 09:12
    请选择关闭问题的原因
    确定 取消
    返回顶部