我有个sql语句,是按照时间查询 WHERE CreateDate >=@beginTime AND CreateDate <=@endTime, CreateDate 字段是加索引的, beginTime 值为 2015-01-01 00:00:00,endTime 值为2015-10-28 00:00:01
SqlParameter[] paras = { new SqlParameter("@beginTime", DbType.DateTime){SqlValue = beginTime.ToDateTime()}, new SqlParameter("@endTime", DbType.DateTime){SqlValue = endTime.ToDateTime()}, };
ToDateTime 是转换成DateTime类型的。
如果把参数化了,使用拼接语句,20多万数据,时间在2秒左右,但参数化查询却会超时,不知我参数化哪里有问题
使用sqlserver 自带工具 "sql server profiler" 工具查看下真正执行的语句是什么。
(点击 "工具" -》 sql server profiler选项)
排除程序或者代码的原因.进一步去解决问题。
用sql监视器看具体执行的sql语句,然后直接在sql管理器里执行看看结果.
你代码写错了,应该是这样子写的:
SqlParameter[] paras = { new SqlParameter("@beginTime",endTime.ToDateTime()), new SqlParameter("@endTime", beginTime.ToDateTime()) };
你还多此一举,换蛇添足。当然会错了
你这种写法在某些情况下会出问题的
ni这么些,会有Bug 的
指定参数类型效率更高
SqlParameter[] paras = { new SqlParameter("@beginTime", DbType.DateTime),
new SqlParameter("@endTime", DbType.DateTime) };
paras[0].value=beginTime;
paras[1].value=endTime;
如果传入的时间是string类型,则转换一下