添加助手SQL索引

时间:2018-12-13 15:34:20

标签: sql sql-server

我有以下视图,看来运行得足够快,但是当我查看执行计划时,它显示了第二个查询中的前N个排序,由于第一个查询中的每一行都被重复使用,因此花费了约90%。

我应该在贷款表中添加索引以帮助ORDER BY子句吗?

CREATE VIEW [dbo].[ResourceItemStatus] AS
SELECT
    i.ID AS ItemID,
    i.ResourceID,
    i.DateAdded,
    i.LocationID,
    i.OwnerID,
    i.Barcode,
    i.MissingReasonID,
    i.DateRemoved,
    ll.PatronID,
    ll.ID AS LoanID,
    ll.IssueDateTime,
    ll.DueDate,
    ll.ReturnDateTime,
    ll.LoanTypeID,
    ll.RenewalCount,
    ll.DeleteSummary,
    ll.ReturnStatusID,
    ll.FineID,
    (SELECT COUNT(*) FROM Loan WHERE Loan.ItemID = i.ID) AS LoanCount,
    (SELECT COUNT(*) FROM Item WHERE Item.DateRemoved IS NULL AND Item.ResourceID = i.ResourceID) AS AvailableItemCount
FROM Item i
OUTER APPLY
(
    SELECT TOP 1
        l.ID,
        l.ItemID,
        l.PatronID,
        l.IssueDateTime,
        l.DueDate,
        l.ReturnDateTime,
        l.LoanTypeID,
        l.RenewalCount,
        l.DeleteSummary,
        l.ReturnStatusID,
        l.FineID
    FROM Loan l
    WHERE l.ItemID = i.ID
    ORDER BY l.IssueDateTime DESC, l.ID DESC

) AS ll

1 个答案:

答案 0 :(得分:1)

尝试使用窗口聚合而不是标量子查询/外部应用:

<item android:id="@+id/