我有一個查詢,如下所示:查詢速度慢,即使加盟條件列在SQL Server中有索引
select distinct
b.INSTANCE_ID, b.itemnumber,
isnull((a.ITEM_REV + ' ' + a.ITEM_CN), 'Introductory') itemrev,
b.bom_itemnumber, b.bom_rev
into
parts_bom_stg2
from
PARTS_BOMD a
inner join
parts_bom_stg b on a.ITEM_NUMBER = b.itemnumber
and b.itemrev = a.ITEM_REV;
其估計的執行計劃是:
指標上兩個表的item_number和item_rev列。
我不能在查詢中消除不同。我猜它由於這個不同而滯後。有誰知道我可以如何優化它。兩張表都有近500萬行。
表Parts_BOMD
的表結構:
Parts_bom_stg
CREATE TABLE [dbo].[PARTS_BOMD]
(
[BOM_ID] [varchar](4000) NULL,
[ITEM_REV] [varchar](80) NULL,
[ITEM_CN] [varchar](4000) NULL,
[ITEM_NUMBER] [varchar](80) NULL,
[ITEMNUMBER] [varchar](4000) NULL,
[FINDNUM] [varchar](4000) NULL,
[QTY] [varchar](4000) NULL,
[ITEMDESCRIPTION] [varchar](4000) NULL,
[ITEMREV] [varchar](4000) NULL,
[itemSize] [varchar](4000) NULL,
[REFDES] [varchar](4000) NULL,
[BOMText02] [varchar](4000) NULL,
[itemList21] [varchar](4000) NULL,
[SUMMARYCOMPLIANCE] [varchar](4000) NULL,
[BOMMULTITEXT30] [varchar](4000) NULL,
[BOMNotes] [varchar](4000) NULL,
[itemList10] [varchar](4000) NULL,
[BOMList01] [varchar](4000) NULL,
[BOMList03] [varchar](4000) NULL,
[BOMList02] [varchar](4000) NULL,
[itemText22] [varchar](4000) NULL,
[itemText23] [varchar](4000) NULL,
[itemLifecyclePhase] [varchar](4000) NULL,
[ITEMP2MULTILIST05] [varchar](4000) NULL,
[itemText15] [varchar](4000) NULL,
[RNUM] [varchar](4000) NULL
)
:
CREATE TABLE [dbo].[parts_bom_stg]
(
[INSTANCE_ID] [bigint] NOT NULL,
[itemnumber] [varchar](80) NULL,
[itemrev] [varchar](80) NULL,
[bom_itemnumber] [varchar](max) NULL,
[bom_rev] [varchar](500) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
向我們展示您的**表格結構!** –
編輯的問題 –
爲什麼一切'[varchar](4000)'?桌上有什麼索引? –