服务器详细信息(_D)
hostname | category | active |
---|---|---|
server1 | small | yes |
server2 | big | yes |
服务器统计信息服务器
hostname | metric | value | lastupdated |
---|---|---|---|
server1 | cpu | 10 | 03:30:37 |
server1 | ram | 25 | 03:30:37 |
server1 | disk | 57 | 03:30:37 |
server2 | cpu | 23 | 03:30:37 |
server2 | ram | 55 | 03:30:37 |
server2 | disk | 33 | 03:30:37 |
server1 | cpu | 13 | 03:25:37 |
server1 | ram | 25 | 03:25:37 |
server1 | disk | 43 | 03:25:37 |
server2 | cpu | 83 | 03:25:37 |
server2 | ram | 95 | 03:25:37 |
server2 | disk | 63 | 03:25:37 |
结果应与上次更新的最新值类似
hostname | category | active | cpu | ram | disk |
---|---|---|---|---|---|
server1 | small | yes | 10 | 25 | 57 |
server2 | big | yes | 23 | 55 | 33 |
我使用的是SQL Server数据库 我编写了以下查询,它给出了所需的输出
SELECT hd.hostname, hd.category, hd.active,
(SELECT top 1 hs_cpu.value
FROM 服务器统计信息服务器 hs_cpu
WHERE hs_cpu.hostname = hd.hostname AND hs_cpu.metric = 'cpu'
ORDER BY hs_cpu.lastupdated DESC) AS cpu,
(SELECT top 1 hs_ram.value
FROM 服务器统计信息服务器 hs_ram
WHERE hs_ram.hostname = hd.hostname AND hs_ram.metric = 'ram'
ORDER BY hs_ram.lastupdated DESC) AS ram,
(SELECT top 1 hs_disk.value
FROM 服务器统计信息服务器 hs_disk
WHERE hs_disk.hostname = hd.hostname AND hs_disk.metric = 'disk'
ORDER BY hs_disk.lastupdated DESC) AS disk
FROM 服务器详细信息(_D) hd;
我们是否可以使用不带子查询的联接来优化此查询?