我有一个简单的查询:当我添加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