如何解决如何优化查询?
| 我写了这段代码来查找停机节点并计算停机时间。这段代码有效,但是我想知道其他方法或对该代码进行优化吗?计算停机时间的最佳方法是什么?用户可以通过任何方式(交互方式)输入日期和时间间隔吗? 选择q1.nodeid,q1.VendorIcon,q1.Caption,q1.IP_Address, q1.OutageDurationInMinutes, q2.TimeUp 从 (选择 Nodes.NodeID AS NodeID,ltrim(rtrim(Nodes.Caption))字幕,Nodes.VendorIcon,Nodes.IP_Address, sum(DATEDIFF(hh,StartTime.EventTime,EndTime.EventTime))作为OutageDurationInMinutes FROM活动开始时间 左联接事件EndTime开 EndTime.EventType = \'5 \'和 EndTime.NetObjectType = \'N \'和 EndTime.NetworkNode = StartTime.NetworkNode和 EndTime.EventTime = ( 选择 min(EventTime) 来自活动 哪里 EventTime> StartTime.EventTime和 EventType = \'5 \'和 NetObjectType = \'N \'和 NetworkNode = StartTime.NetworkNode ) 内部联接节点打开 StartTime.NetworkNode = Nodes.NodeID 哪里 Nodes.Department = \'4 \'AND StartTime.EventType = 1 AND StartTime.NetObjectType = \'N \'AND 在dateadd(M,-1,getdate())和getdate()之间的StartTime.eventtime 通过...分组 Nodes.NodeID,Nodes.Caption,Nodes.VendorIcon,Nodes.IP_Address,Nodes.LastBoot )q1 内部联接 (选择 Nodes.NodeID AS NodeID ,ltrim(rtrim(Caption))字幕 ,供应商图标 ,IP地址 ,DateDiff(hour,Nodes.LastBoot,GetDate())AS HoursUp ,CONVERT(VARCHAR(40),DATEDIFF(分钟,Nodes.LastBoot,GETDATE())/(24 * 60)) +天,' + CONVERT(VARCHAR(40),DATEDIFF(分钟,Nodes.LastBoot,GETDATE())%(24 * 60)/ 60) +小时,和\' + CONVERT(VARCHAR(40),DATEDIFF(分钟,Nodes.LastBoot,GETDATE())%60) + \'分钟。\'AS TimeUp 来自[节点] 哪里 q1上dateadd(day,-30,getdate())和getdate())之间的LastBoot.NodeID = q2.NodeID 字幕订购解决方法
我想知道其他方式或
优化此代码?
我建议您查看查询的查询执行计划。
有什么办法(互动方式)
用户可以输入日期和时间
间隔?
您可以先确定值,然后再运行查询并在查询中使用这些参数(虽然我不确定是什么在调用查询,这是存储过程吗?)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。