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'
 
以上四种解决方案的执行计划都如下,实际环境推荐封装成存储过程:


 
 
 
作者 小材小用
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • sql常见面试题
  • SQL SERVER 2005性能之跟踪
  • LINUX上RMAN自动备份脚本
  • sql server 列转行
  • SQL SERVER2008日常自动化备份
  • SQL Server 2005 镜像构建手册
  • SQL编程(一)
  • 如何将多个SQL查询统计结果一次显示出来
  • 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色

数据库技术导航

SqlserverMysqlOracleDB2数据库数据库综合
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1