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)

记一下,让自己涨涨记性. (完)