小编Ben*_*nCr的帖子

为什么添加 where 子句时查询会变慢?

我有两个数据库,并且都对具有相同索引的同一个表有相同的视图。

该视图从位置表中选择给定 IMEI 的顶部位置。

CREATE VIEW [dbo].[LatestDeviceLocation]
AS 
SELECT DISTINCT t.Imei, t.Accuracy, t.UserId, t.Lat, t.Lng, t.Timestamp
FROM (SELECT Imei, MAX(Timestamp) AS latest
    FROM      dbo.DeviceLocation
    GROUP BY Imei) AS m INNER JOIN
    dbo.DeviceLocation AS t ON t.Imei = m.Imei AND t.Timestamp = m.latest
GO
Run Code Online (Sandbox Code Playgroud)

我正在使用一个非常简单的 select 查询视图,其中包含一个非常简单的 where 子句。

SELECT TOP 1000 [Imei]
      ,[Accuracy]
      ,[UserId]
      ,[Lat]
      ,[Lng]
      ,[Timestamp]
  FROM [dbo].[LatestDeviceLocation]
  Where [Timestamp] > '2015-02-19T00:00:00.000Z' AND [Timestamp] < '2015-02-26T23:59:59.999Z'
Run Code Online (Sandbox Code Playgroud)

在我的实时服务器上,当我查询我的视图时,我会在 < 1 秒内取回数据。当我添加一个Where [Timestamp] > '2015-02-19T00:00:00.000Z' AND [Timestamp] < '2015-02-26T23:59:59.999Z'跳转到大约 …

performance sql-server-2008-r2 query-performance

2
推荐指数
1
解决办法
2473
查看次数