优化实战:不要随便将字段折腾来折腾去的

系统 1524 0
到新公司先看了看数据库的性能,查看一个存储占用的CPU巨多,而且执行次数也特别多,打开一看:
alter   PROCEDURE   [ dbo ] . [ IPLogInsert ]  
   
@IP   char ( 15 =   ' 255.255.255.255 '  
 
AS  
 
BEGIN   
 
SET  NOCOUNT  ON ;  
declare   @currId   int   
declare   @today   datetime   
-- SET @currID = 0  
SET   @today   =   getdate ()     
SELECT   @currId   =  id     from  IPLog    
where   convert ( char ( 10 ),  @today , 101 =   convert ( char ( 10 ),AccessTime,  101 )     and   @IP   =  IP   if @currID   =   0 )  
 
insert   into  IPLog (AccessTime,IP, [ Count ] )   
 
values  ( @today @IP 1
 
else    
 
update  IPLog    
 
SET   [ count ] = [ count ] + 1    
 
WHERE   convert ( char ( 10 ),  @today , 101 =   convert ( char ( 10 ),AccessTime,  101 )      and   @IP   =  IP 
 
END   

很是汗颜啊!一个简单的需求被写成了这样。
最后我改成的是:
update  IPlog  set   Count   =   Count + 1   where  Ip  =   @IP   and  AccessTime  between   dateadd ( day , 1 , datediff ( day , 0 , @today - 1 ))  and    dateadd ( day , 1 , datediff ( day , 0 , @today ))
if ( @@rowcount   = 0 )
begin
    
insert   into  IPLog (AccessTime,IP, [ Count ] )   
values  ( @today , @IP , 1 )

前一个是将字段转成了char然后再比较,很无赖啊。

优化实战:不要随便将字段折腾来折腾去的


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论