同一查询,同一服务器,不同数据库查询运行速度极慢

时间:2019-01-24 17:52:21

标签: sql sql-server

在数据库中写一个视图。从1个数据库调用该视图时,运行该视图需要0秒钟,而从另一个数据库调用时,该视图需要2.5分钟。

我创建了一个最能描述此问题的视频。在这里观看:https://youtu.be/jEqI2bUyelQ

我很讨厌通过删除它来重新创建视图。 我试图比较查询执行计划,它们在使用一个数据库与另一个数据库运行时是不同的。 我对查询进行了自我调查,发现如果删除了where子句,则性能将重新获得,并且两者所需的时间相同。

预期结果是,无论从哪个数据库调用视图,运行都需要0秒。

这是SQL脚本:

SELECT 
    cus.MacolaCustNo,
    dsp.cmp_code ,
    count(distinct dsp.item_no) AS InventoryOnDisplay,
    (SELECT max(dsp.LastSynchronizationDate)
    FROM Hinkley.dbo.vw_HH_next_Capture_date ) AS UpdatedDate,
    case
        WHEN DATEADD(DAY, 90, isnull(max(dsp.LastSynchronizationDate),'1/1/1900')) >= 
            (SELECT max(dsp.LastSynchronizationDate)
                FROM Hinkley.dbo.vw_HH_next_Capture_date ) 
            THEN 'Compliant'
        WHEN DATEADD(DAY, 90, isnull(max(dsp.LastSynchronizationDate),'1/1/1900')) <= 
            (SELECT max(dsp.LastSynchronizationDate)
            FROM Hinkley.dbo.vw_HH_next_Capture_date )
            AND DATEADD(DAY, 90, isnull(max(dsp.LastSynchronizationDate),'1/1/1900')) >= getdate() 
            THEN 'Warning'
        ELSE 'Non-Compliant'
    END AS Inventory_Status
FROM 
    Hinkley.dbo.HLIINVDSP_SQL dsp (nolock)
INNER JOIN 
    [DATA].dbo.vw_HLI_Customer (nolock) cus
        ON cus.CusNo = dsp.cmp_code
WHERE 
    cus.cust_showroom = 1
    AND 
    cus.active_y = 1
GROUP BY cus.MacolaCustNo,dsp.cmp_code 

0 个答案:

没有答案