MSSQL查询更快地从两个表中获取最新值

MSSQL查询更快地从两个表中获取最新值,sql,tsql,Sql,Tsql,此查询提取从两个不同表创建的时间戳DT_,并选择最近的时间戳。INCIDENT_AUDIT_HISTORY表非常大,尽管我通过添加索引将性能提高了10秒,但我的查询仍需要20秒才能运行,这比应用程序所需的时间要长。我想知道是否有更有效的方法来编写此查询 SELECT i.NUMBER, i.PROBLEM, st.LABEL AS STATUS, i.ID_ASSIGNEE, r.LNAME + ', ' + r.FNAME AS ASIGNEE, c.LNAME + ',

此查询提取从两个不同表创建的时间戳DT_,并选择最近的时间戳。INCIDENT_AUDIT_HISTORY表非常大,尽管我通过添加索引将性能提高了10秒,但我的查询仍需要20秒才能运行,这比应用程序所需的时间要长。我想知道是否有更有效的方法来编写此查询

    SELECT        i.NUMBER, i.PROBLEM, st.LABEL AS STATUS, i.ID_ASSIGNEE, r.LNAME + ', ' + r.FNAME AS ASIGNEE, c.LNAME + ', ' + c.FNAME AS CUST_NAME, 
                     p.LABEL AS PRIORITY, i.DT_CREATED,
                         (SELECT        MAX(DT_CREATED) AS LAST_WORK
                           FROM            (SELECT        TOP (1) DT_CREATED
                                                     FROM            dbo.REP_WORK_HISTORY AS b
                                                     WHERE        (i.NUMBER = INCIDENT_NUMBER) AND (ID_OWNER = r.ID)
                                                     ORDER BY DT_CREATED DESC
                                                     UNION
                                                     SELECT        TOP (1) DT_CREATED
                                                     FROM            dbo.INCIDENT_AUDIT_HISTORY AS c
                                                     WHERE        (i.NUMBER = INCIDENT_NUMBER) AND (ID_OWNER = r.ID)
                                                     ORDER BY DT_CREATED DESC) AS a) AS LAST_HISTORY, g.GROUP_NAME FROM            dbo.REPS AS r RIGHT OUTER JOIN
                     dbo.GROUPS AS g ON r.ID_DEFAULT_GROUP = g.ID RIGHT OUTER JOIN
                     dbo.INCIDENTS AS i ON r.ID = i.ID_ASSIGNEE LEFT OUTER JOIN
                     dbo.CUSTOMERS AS c ON i.ID_CUSTOMER = c.ID LEFT OUTER JOIN
                     dbo._PRIORITIES AS p ON i.PRIORITY = p.ID LEFT OUTER JOIN
                     dbo.INCIDENT_STATUSES AS st ON i.ID_STATUS = st.ID WHERE (st.TYPE <> 2) AND (st.TYPE <> 16)

你能简单介绍一下你想要达到的目的吗?他有相关的子查询,从两个表中选择最大日期列。你有关于事件\审计\历史\事件\编号、ID \所有者、DT \创建描述的索引吗?在REP \工作\历史表中也有相同的索引吗?你的SQL Server版本是什么?SQL版本不幸的是2005年。是的,我已验证在事件\审核\历史记录和报告\工作\历史记录表中的引用字段上有索引。我希望有一种更有效的方式加入所需的数据,以提高响应时间。