记一次SQLServer服务器CPU占用100%
1. 前置说明
select *
from test where Udt>=DATEADD(minute,-10,getdate())
数据库大约有七百万数据.
针对Udt字段建立了聚合索引.
由于业务需求,使用游标调用上面SQL.循环约20次.
服务器配置:
cpu: 8核16线程
内存: 64GB
执行存储过程大约需要15秒,期间cpu占用100%
2. 原因及解决方案
原因: 数据库表 Udt字段 为 varchar(100) 类型
我也没有想到更新时间
的字段 类型是 varchar
解决方法: 将数据库字段修改为 datetime 类型
解决方法2: 修改sql语句
select *
from test where Udt>=CONVERT(varchar(100), DATEADD(minute,-10,getdate()), 21)
记一下,让自己涨涨记性. (完)