SQL中全局时间问题(数据库高手请指教)(107分)

  • 主题发起人 主题发起人 网中戏
  • 开始时间 开始时间

网中戏

Unregistered / Unconfirmed
GUEST, unregistred user!
SQL2000 。有一存储过程。一次有90万条刷卡数据
考勤时间根据一时间判断是昨夜加班的刷卡、还是今天早上的刷卡。
我用一表保存一参照时间(如6:30:00).把所有的刷卡都和它比较。
小于它是夜班下班刷卡、大于它是今天上午上班刷卡。
在快的电脑上一切正常。每次判断前去参考表中读参照时间然后比较。
而在慢的电脑上速度是问题(时间太长)。请教如下。
既然每次读出来的参考时间是不变化的(如6:30:00)。能不能设个
全局变量只要读一次。以后都和它去比较。这样速度应该会快一些(不用每次都取)
 
对啊!思路不错!
 
你可以把这个时间在你的程序初始化的时候写在你的程序中,做全局变量。不知是不是适合你的要求
 
如果是在存储过程里面,你本身就可以声明一个变量的.
你说的时间长,不一定是在这方面费的时间把,执行计划里面是在这块占用最长么?
 
干脆放在一个专门的表中,同时记录是哪一次计算的,岂不是方便
 
或者你把这个时间放在一个表TA中,仅有一个记录RecA(varchar(8),值06:30:00,当然可以是datetime,日期随便,只不过下面的语句需要做一点点的修改而已),就是该基准时间,这样可以使用SQL查询一次搞定(假设考勤表为TB,时间字段为RecB):
select case when convert(varchar(8),A.RecB<B.RecA then '早上刷卡' else '昨夜加班' end from TB A,TA B
注意:TA和TB之间不需要条件
 
我的问题是
能不能设个[red]全局变量[/red]只要读一次。
 
是不是当存储过程第一次运行时取出来后,该存储过程之后运行时均采用该值啊
 
正是此想法。第一次取出放在全局变量中。
 
你数据库的master库里创建启动自动加载存储过程,其中创建全局时间类型变量,把你的时间值赋予变量,这样每次只要数据库不停止,这个变量是一直存在的.
 
楼上的能不能具体点。谢谢
 
SQL中的全局变量好像都是由系统提供且预先声明的,自定义不了~

用一个表来存储吧。
 
没有人有好方法。结贴送分了
 
后退
顶部