Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 查询以选择站点监控软件的所有站点状态_Sql_Tsql - Fatal编程技术网

Sql 查询以选择站点监控软件的所有站点状态

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) 每次当站点状态改变时,我都用递增迭代计数器写一条记录 如何查询所有站点名称的所有最后状态? 目标-接收一个带有站点名称、状态(向上或向下)、发生日期时间和迭代计数器编号的表。如果索

我写了一个监控大量站点(超过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是否会这样做,而且这种行为可能因数据库而异。