在我的代码中使用循环来重复执行select语句以获取表格中的实时状态列值是否有其他选择?
这是一个简单的“从dbo.mytable中选择状态”。但是,我不知道为什么这个简单的sql语句在循环上执行时需要这么多的CPU。
现在,循环使sqlserver使用超过50%的CPU。请提出任何替代方案或解决方法。
感谢。
编辑:在有人说“你为什么这样做之前” 需要一个循环?“,”不要使用循环“等, 让我解释一下,这不是我的 需求。这是我的 company.Thanks
答案 0 :(得分:3)
如上所述,我们需要一些代码来正确调试,但这些是我的想法......
这个循环有多快?如果它完全是字面意思
while (x == false) {
x = SQL STATEMENT
}
然后是的,你将导致大量的SQL加载,因为查询将每秒运行数千次。
另一方面,如果你使用计时器并且每隔几秒循环一次,那么这种负载是不寻常的,除非:
最后,您可以考虑在DAL中构建一些缓存,以减少实际进入SQL服务器的查询数量。您可以实现自己的逻辑来执行此操作,也可以使用以下内容:http://bltoolkit.net/Doc.CacheAspect.ashx
答案 1 :(得分:2)
为什么这个简单的sql语句需要 这么多CPU
status
在status
上设置非聚集索引可以极大地提高性能。 原因是SQL Server无需触及表格所有。但是在循环中调用它仍然没有多大意义。
答案 2 :(得分:0)
你的循环多久调用一次语句?
之间存在巨大差异
Foreach day
at noon: call query
和
Foreach millisecond
call query