我有一个查询,如下所示:查询速度慢,即使加盟条件列在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)'?桌上有什么索引? –