好吧......我不明白爲什麼這個查詢花費這麼長時間(MSSQL Server 2005中):
[典型輸出3K行,5.5分鐘執行時間]SQL服務器長的查詢
SELECT dbo.Point.PointDriverID, dbo.Point.AssetID, dbo.Point.PointID, dbo.Point.PointTypeID, dbo.Point.PointName, dbo.Point.ForeignID, dbo.Pointtype.TrendInterval, coalesce(dbo.Point.trendpts,5) AS TrendPts, LastTimeStamp = PointDTTM, LastValue=PointValue, Timezone
FROM dbo.Point
LEFT JOIN dbo.PointType ON dbo.PointType.PointTypeID = dbo.Point.PointTypeID
LEFT JOIN dbo.PointData ON dbo.Point.PointID = dbo.PointData.PointID
AND PointDTTM = (SELECT Max(PointDTTM) FROM dbo.PointData WHERE PointData.PointID = Point.PointID)
LEFT JOIN dbo.SiteAsset ON dbo.SiteAsset.AssetID = dbo.Point.AssetID
LEFT JOIN dbo.Site ON dbo.Site.SiteID = dbo.SiteAsset.SiteID
WHERE onlinetrended =1 and WantTrend=1
PointData是biggun,但我認爲它的定義應該讓我拿起我想很容易就夠了:
CREATE TABLE [dbo].[PointData](
[PointID] [int] NOT NULL,
[PointDTTM] [datetime] NOT NULL,
[PointValue] [real] NULL,
[DataQuality] [tinyint] NULL,
CONSTRAINT [PK_PointData_1] PRIMARY KEY CLUSTERED
(
[PointID] ASC,
[PointDTTM] ASC
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [IX_PointDataDesc] ON [dbo].[PointData]
(
[PointID] ASC,
[PointDTTM] DESC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
PointData是550M行,點(點名的源)僅28K行。 我試圖做一個索引視圖,但我無法弄清楚如何以兼容的方式(最大值,沒有子查詢,沒有CTE)得到最後的時間戳/值。
它每小時運行兩次,運行後我將更多的數據放入我選擇的3K PointID中。我想直接在Point中創建LastTime/LastValue表,但這似乎是錯誤的方法。
我錯過了什麼,或者我應該重建一些東西? (我也是DBA,但我知道約A'ing一個DB非常少!)
你可以在你的問題中包含你的查詢執行計劃嗎?這將很快指出您的查詢的哪個方面導致放緩。有許多連接,以及兩個過濾器,任何可能是罪魁禍首 - 一個執行計劃肯定會說。 – SqlRyan 2010-05-17 22:54:20
除了rwmnau說的,我注意到你所有的連接都是左連接。 Point.PointTypeId是否可以爲空?那麼Point.AssetId呢? SiteAsset.SiteId怎麼樣? – Thomas 2010-05-17 22:59:24
我該如何將執行計劃吐出文本? 我想要連接是左連接,所以我可以在沒有完全定義的點上運行它(例如,我沒有將它們分配給資產,因此Point.AssetID一段時間爲空)。 – user343508 2010-05-17 23:41:07