T-SQL之变量导致索引无效的问题(2)
来源:未知 责任编辑:责任编辑 发表时间:2015-09-16 20:04 点击:次
select * from T_order where ordertime>@date
option(OPTIMIZE FOR (@date='2012-04-29'))
解决方案3:封装成存储过程,有人就会疑问了,为什么存储过程可以呢?在这里大家别把参数和变量混淆了,在SQL SERVER里面写法都一样,但意义不完全一样。存储过程的编译实在第一次执行的时候才产生执行计划。
--创建存储过程
CREATE PROC Sp_select_t_order
@date DATETIME
AS www.2cto.com
SELECT *
FROM t_order
WHERE ordertime > @date
GO
--执行存储过程
DECLARE @date DATETIME
SET @date = Getdate()
EXEC Sp_select_t_order @date
解决方案4:参数化查询
sp_executesql
N'select * from T_order where ordertime>@date',
N'@date datetime', www.2cto.com
@date='2012-04-29'
以上四种解决方案的执行计划都如下,实际环境推荐封装成存储过程:
作者 小材小用
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>