我有一個簡單的查詢:當我添加Where子句時會出現什麼問題?
Select Distinct BOLTYPENAME, BOLTYPE.BOLTYPE From BOLTYPE
Inner Join WORKORDER on WORKORDER.BOLTYPE=BOLTYPE.BOLTYPE
Inner Join BOLMAIN On BOLMAIN.BOLID=WORKORDER.BOLID
Where BOLMAIN.CORID=156
當我運行此查詢沒有「如果」的條款,它需要0.1秒。但添加where子句會導致它需要1分鐘才能返回。所有的表都有相關的索引,並且它們已經被拆分。這三個表中的行數是:
BOLTYPE:11行
BOLMAIN:71455行
工單:197500行
下面是執行計劃:
無 Where Where條款(0.1秒):
隨着在where子句(60秒):
任何想法,可能是什麼問題?
更新:這裏是相關指數的定義:
CREATE NONCLUSTERED INDEX [BOLIDX] ON [dbo].[WORKORDER]
([BOLID] ASC)
GO
CREATE NONCLUSTERED INDEX [CORIDX] ON [dbo].[BOLMAIN]
([CORID] ASC)
INCLUDE ([BOLID])
GO
CREATE NONCLUSTERED INDEX [BOLTYPEIDX] ON [dbo].[WORKORDER]
([BOLTYPE] ASC)
GO
這也採取同樣的時間? SELECT DISTINCT BOLTYPENAME,BOLTYPE.BOLTYPE從BOLTYPE,工單,BOLMAIN 其中WORKORDER.BOLTYPE = BOLTYPE.BOLTYPE AND BOLMAIN.BOLID = WORKORDER.BOLID AND BOLMAIN.CORID = 156 – Varun
是。它正在採取同一時間。 – navigator
您的索引看起來不正確。你可以編輯他們的定義嗎? – Luaan