博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
优化实战:不要随便将字段折腾来折腾去的
阅读量:6503 次
发布时间:2019-06-24

本文共 1028 字,大约阅读时间需要 3 分钟。

到新公司先看了看数据库的性能,查看一个存储占用的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然后再比较,很无赖啊。

转载于:https://www.cnblogs.com/perfectdesign/archive/2008/05/28/1209375.html

你可能感兴趣的文章
开源 免费 java CMS - FreeCMS1.5-建站向导
查看>>
Selenium的延迟等待
查看>>
jquery 1.6以上版本 全选
查看>>
AppCan 学习
查看>>
flask框架
查看>>
《疯狂Java讲义》学习笔记(十)异常处理
查看>>
Lua(Codea) 中 table.insert 越界错误原因分析
查看>>
ELK 5.x日志分析 (二) Elasticserach 5.2 安装
查看>>
sbt配置nexus仓库
查看>>
一次奇怪的AP注册异常问题处理
查看>>
TableStore: 海量结构化数据分层存储方案
查看>>
Unity 4.x游戏开发技巧集锦(内部资料)
查看>>
自适应网页设计
查看>>
获取BT节点信息bittorrent-discovery
查看>>
Centos 7使用vsftpd搭建FTP服务器
查看>>
linux下SVN不允许空白日志提交
查看>>
第2周第1课
查看>>
docker制作镜像篇(基于容器)
查看>>
山寨c 标准库中的getline 函数
查看>>
shell时间
查看>>