| 发表于:2007-03-26 09:44:41 楼主 |
这个存储过程主要用来记录个人blog的访问情况的。 这个存储过程是否还可以优化?目前执行起来非常耗cpu,执行时间也很长,100万条记录左右,cpu就开始100%了。 请高手指点了!!! create proc blog_insertvisiting ( @visitor nvarchar(50), @ip nvarchar(20), @blogid int ) as if exists(select top 1 vid from blog_visiting with(nolock) where blogid=@blogid and visitor=@visitor and ip=@ip and convert(varchar(10),dateadded,121)=convert(varchar(10),getdate(),121)) begin --如果不是匿名访客,更新访问时间 if lower(@visitor) != 'guest ' begin update a set a.dateadded=getdate() from blog_visiting a with(rowlock) where blogid=@blogid and visitor=@visitor and ip=@ip and convert(varchar(10),dateadded,121)=convert(varchar(10),getdate(),121) end end else begin insert blog_visiting(ip,visitor, blogid, dateadded) values(@ip,@visitor, @blogid, getdate()) --更新访问量 update blog_stats with(rowlock) set visitcount=isnull(visitcount,0)+1 where blogid=@blogid end |
|
|
|
|