私は87の列と53,000の行を持つテーブルtblStkMst2
を持っています。次のクエリを実行すると、83〜96ミリ秒(Core2 Duo、2.8 GHz、2 GBのRAM)がかかります。しかし、別のキーワードを使用すると、1086〜1103ミリ秒(1秒以上)がかかります。それは本当に高価です。 53,000行のデータに対して重複除去アルゴリズムを適用すると、1秒かかることはありません。DISTINCTでのSQL Server 2005のパフォーマンスの問題
実行時間を改善するためにSQL Server 2005に他の方法がありますか?
declare @monthOnly int set @monthOnly = 12
declare @yearOnly int set @yearOnly = 2011
SELECT --(distinct)--
tblSModelMst.SMNo as [ModelID]
,tblSModelMst.Vehicle as [ModelName]
FROM tblStkMst2
INNER JOIN tblDCDetail ON tblStkMst2.DCNo = tblDCDetail.DCNo AND tblDCDetail.Refund=0
INNER JOIN tblSModelMst ON tblStkMst2.SMno = tblSModelMst.SMNo
INNER JOIN tblBuyerMst ON tblDCDetail.BNo = tblBuyerMst.BNo
LEFT OUTER JOIN tblSModelSegment ON tblSModelMst.SMSeg = tblSModelSegment.ID
left outer JOIN dbo.tblProdManager as pd ON pd.PMID = tblBuyerMst.PMId
WHERE (pd.Active = 1) AND ((tblStkMst2.ISSFlg = 1) or (tblStkMst2.IsBooked = 1))
AND (MONTH(tblStkMst2.SIssDate) = @monthOnly) AND (YEAR(tblStkMst2.SIssDate) = @yearOnly)
チューニングアドバイザーを使用して見積もり実行計画を表示しようとしましたか。これらは、時間がどこで取られているかを見つけるのに役立ちます。また、主キーと外部キーのすべての列にインデックスがありますか? –
少なくともDISTINCTバージョン、好ましくは両方の実行計画を表示してください。 –
@Abidulイスラム教 - あなたは彼らの継続的な援助をしたい場合は、人々に応答する必要があります。 –