【问题标题】:How can I optimize my query?如何优化我的查询?
【发布时间】:2011-09-01 16:01:11
【问题描述】:

我编写了这段代码来查找下行节点并计算上行和下行时间。此代码有效,但我想知道任何其他方式或优化此代码?计算停机时间的最佳方法是什么?有没有什么方法(交互方式)可以让用户输入日期和时间间隔?

选择 q1.nodeid、q1.VendorIcon、q1.Caption、q1.IP_Address、 q1.OutageDurationInMinutes, q2.TimeUp 从 (选择 Nodes.NodeID AS NodeID, ltrim(rtrim(Nodes.Caption)) Caption, Nodes.VendorIcon,Nodes.IP_Address, sum(DATEDIFF(hh, StartTime.EventTime, EndTime.EventTime)) 作为 OutageDurationInMinutes FROM 事件开始时间 左加入事件 EndTime On EndTime.EventType = '5' 和 EndTime.NetObjectType = 'N' 和 EndTime.NetworkNode = StartTime.NetworkNode 和 结束时间.事件时间 = ( 选择 分钟(事件时间) 从事件 在哪里 EventTime>StartTime.EventTime 和 EventType = '5' 和 NetObjectType = 'N' 和 NetworkNode = StartTime.NetworkNode ) INNER JOIN 节点开启 StartTime.NetworkNode = 节点.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) +'分钟。'作为超时 FROM [节点] 在哪里 q1.NodeID=q2.NodeID 上的 dateadd(day, -30, getdate()) 和 getdate()) q2 之间的 LastBoot 按标题排序

【问题讨论】:

标签: sql query-optimization


【解决方案1】:

我想知道任何其他方式或 优化这段代码?

我建议您查看一下查询执行计划。

有什么办法(交互方式) 用户可以输入日期和时间 间隔?

您可以在运行查询之前确定值并在查询中使用这些参数(我不确定是什么在调用您的查询,它是存储过程吗?)

【讨论】:

    猜你喜欢
    • 2012-10-03
    • 1970-01-01
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多