Sql 查询以选择站点监控软件的所有站点状态
我写了一个监控大量站点(超过400个)状态的程序。我从API收到的有关站点状态(向上或向下)的信息。我使用MS SQL Server存储有关状态的信息 我有一个名为SiteStatus的SQL表(id、site\u name、site\u status、date\u time、iteration\u counter) 每次当站点状态改变时,我都用递增迭代计数器写一条记录 如何查询所有站点名称的所有最后状态?Sql 查询以选择站点监控软件的所有站点状态,sql,tsql,Sql,Tsql,我写了一个监控大量站点(超过400个)状态的程序。我从API收到的有关站点状态(向上或向下)的信息。我使用MS SQL Server存储有关状态的信息 我有一个名为SiteStatus的SQL表(id、site\u name、site\u status、date\u time、iteration\u counter) 每次当站点状态改变时,我都用递增迭代计数器写一条记录 如何查询所有站点名称的所有最后状态? 目标-接收一个带有站点名称、状态(向上或向下)、发生日期时间和迭代计数器编号的表。如果索
目标-接收一个带有站点名称、状态(向上或向下)、发生日期时间和迭代计数器编号的表。如果索引正确,最好的解决方案通常是相关子查询:
select sn.*
from sitenames sn
where sn.iteration_counter = (select max(sn2.iteration_counter)
from sitenames sn2
where sn2.sitename = sn.sitename
);
正确的索引位于
sitenames(sitename,iteration\u counter)
如果索引正确,最好的解决方案通常是相关子查询:
select sn.*
from sitenames sn
where sn.iteration_counter = (select max(sn2.iteration_counter)
from sitenames sn2
where sn2.sitename = sn.sitename
);
正确的索引位于
sitenames(sitename,iteration\u counter)
谢谢!这正是我需要的!sitenames(sitename,iteration\u counter desc)
不会提高max
的性能吗?@HABO。这是一个有趣的问题。理论上,该索引可用于直接查找每个sitename
的最高值,而无需查找sitename
的第一个值。我不知道SQL Server是否会这样做,而且这种行为可能因数据库而异。谢谢!这正是我需要的!sitenames(sitename,iteration\u counter desc)
不会提高max
的性能吗?@HABO。这是一个有趣的问题。理论上,该索引可用于直接查找每个sitename
的最高值,而无需查找sitename
的第一个值。我不知道SQL Server是否会这样做,而且这种行为可能因数据库而异。