首页 > 解决方案 > 查询以选择站点监控软件的所有站点状态

问题描述

我编写了一个程序来监控大量站点(超过 400 个)的状态。我从 API 收到的有关站点状态(UP 或 DOWN)的信息。我使用 MS SQL Server 来存储有关状态的信息。

我有一个名为 SiteStatus(id、site_name、site_status、date_time、iteration_counter)的 SQL 表。

每次站点状态发生变化时,我都会用增量迭代计数器写一条记录。

如何查询所有站点名称的所有最后状态?目标 - 接收带有站点名称、状态(UP 或 DOWN)、发生日期时间和迭代计数器编号的表。

标签: sqltsql

解决方案


使用正确的索引,最好的解决方案通常是相关子查询:

select sn.*
from sitenames sn
where sn.iteration_counter = (select max(sn2.iteration_counter)
                              from sitenames sn2
                              where sn2.sitename = sn.sitename
                             );

正确的索引是 on sitenames(sitename, iteration_counter)


推荐阅读