sql - 查询以选择站点监控软件的所有站点状态
问题描述
我编写了一个程序来监控大量站点(超过 400 个)的状态。我从 API 收到的有关站点状态(UP 或 DOWN)的信息。我使用 MS SQL Server 来存储有关状态的信息。
我有一个名为 SiteStatus(id、site_name、site_status、date_time、iteration_counter)的 SQL 表。
每次站点状态发生变化时,我都会用增量迭代计数器写一条记录。
如何查询所有站点名称的所有最后状态?目标 - 接收带有站点名称、状态(UP 或 DOWN)、发生日期时间和迭代计数器编号的表。
解决方案
使用正确的索引,最好的解决方案通常是相关子查询:
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)
。
推荐阅读
- python - 从 discord.py 中的用户对象获取 .name
- react-native - 在 ActionViewController.m 中找不到 React/RCTBundleURLProvider.h 文件
- mysql - MySQL转置多表查询
- python - 视图 basket.views.basket_remove 没有返回 HttpResponse 对象。它返回 None 而不是
- c++ - C++,在递归函数中使用 this->
- python - 滚动多个骰子并取观察到的最大值并绘制直方图
- netsuite - 如何使用map reduce脚本删除netsuite的所有交易记录?
- php - Laravel 8 BadMethodCallException
- linux - 如何让我的 Rust 程序在启动时运行?
- matlab - 只需在 Matlab 中加载 MNIST 数据集