- 10
- 0
- 约2.72千字
- 约 10页
- 2021-01-13 发布于山东
- 举报
SQL SERVER中隐式转换的一些细节浅析
其实这是一篇没有技术含量的文章,精通 SQL优化的请绕道。这个缘起于在优化一个 SQL过程中,同事问了我一个问题,为什么 SQL中存在隐式转换,但是执行计划没有变? 我思索了一下,觉得这个问题也有点意思, 说不定有些对隐式转换了解得不深入的同学都有此疑问, 那么下面结合上下文场景做一个细节方面的解答。
我们一个系统中使用了 ORMLite 框架,粗心的开发人员弄出了不少下面这样的 SQL语句,都存在隐式转换问题,如下所示,表 machine_stop_alarm_msg 的结构如下,字段 machine_no 、status 都为VARCHAR(10),但是下面 SQL,传入的变量 @P0,@P1都是 NVARCHAR(4000)类型。
DECLARE @P0 nvarchar(4000),@P1 nvarchar(4000);
SET @P0=1 ;
SET @P1=K172 ;
SELECT [recid],[machine_no]
,[stop_stime]
,[stop_etime]
,[status]
,[memo]
,[createddate]
FROMmachine_stop_alarm_msg t
WHERE1=1
AND t.status=@P0
AND t.machine_no in (@P1 )
ORDER BY
原创力文档

文档评论(0)