由于 2000 行需要太多时间,我如何将此语句 select 增强为?
What I do to enhance this statement select into because it take too much time for 2000 rows?
我在 SQL 服务器上工作 我在将 select 转换为 table 时传输数据很慢,传输少量 (2000) 行需要太多时间
这是我的执行计划:
https://www.brentozar.com/pastetheplan/?id=r1o3p8NOt
这是我的查询:
SELECT
d.PartID ,
d.Code ,
d.CodeTypeID ,
tr.RevisionID ,
tr.ZPLID,
tr.partlevel,
d.FeatureName,
d.FeatureValue
INTO
ExtractReports.dbo.TEqualCodes
FROM
ExtractReports.dbo.TAllData d WITH(NOLOCK)
INNER JOIN
parts.tradecodes tr WITH(NOLOCK) ON d.partid = tr.partid
AND d.codetypeid = tr.codetypeid
AND tr.partlevel = 0
AND d.code = tr.code
AND tr.zplid = 4239
LEFT JOIN
[ExtractReports].[dbo].[TradeCodesInsert] i WITH(NOLOCK) ON i.partid = tr.partid
AND i.codetypeid = tr.codetypeid
AND i.partlevel = tr.partlevel
AND i.partlevel = 0
AND tr.zplid = i.zplid
WHERE
i.partid IS NULL
Table 两个 tables 贸易代码和贸易代码插入的结构
CREATE TABLE [Parts].[TradeCodes]
(
[TradeCodesID] [int] IDENTITY(1,1) NOT NULL,
[PartID] [int] NOT NULL,
[Code] [varchar](20) NOT NULL,
[CodeTypeID] [int] NOT NULL,
[SourceTypeID] [bigint] NULL,
[RevisionID] [bigint] NULL,
[ModifiedDate] [datetime] NULL,
[CreatedDate] [datetime] NOT NULL,
[Modifiedby] [int] NULL,
[CreatedBy] [int] NULL,
[PartLevel] [tinyint] NULL,
[ZPLID] [int] NULL,
[MappingDoneFlag] [int] NOT NULL,
[MappingValueId] [int] NOT NULL,
CONSTRAINT [PK__TradeCod__FEFAF27527F7A1C3]
PRIMARY KEY CLUSTERED ([TradeCodesID] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [UC_PartCode]
UNIQUE NONCLUSTERED ([PartID] ASC, [CodeTypeID] ASC, [PartLevel] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE ExtractReports.dbo.TAllData
(
PartID INT,
Code VARCHAR(20),
CodeTypeID INT,
RevisionID BIGINT,
ZPLID INT,
ConCount INT,
FeatureName NVARCHAR(500),
FeatureValue NVARCHAR(500)
)
如何解决上面查询速度慢的问题?
完全创建那些索引:
CREATE INDEX X1 ON [dbo].[TradeCodesInsert] (partid, codetypeid, partlevel);
CREATE INDEX X2 ON parts.tradecodes (codetypeid, partlevel, zplid, partid) INCLUDE (RevisionID);
CREATE INDEX X2 ON ExtractReports.dbo.TAllData (code, codetypeid) INCLUDE (PartID , FeatureName, FeatureValue)
如果你没有。
我在 SQL 服务器上工作 我在将 select 转换为 table 时传输数据很慢,传输少量 (2000) 行需要太多时间
这是我的执行计划:
https://www.brentozar.com/pastetheplan/?id=r1o3p8NOt
这是我的查询:
SELECT
d.PartID ,
d.Code ,
d.CodeTypeID ,
tr.RevisionID ,
tr.ZPLID,
tr.partlevel,
d.FeatureName,
d.FeatureValue
INTO
ExtractReports.dbo.TEqualCodes
FROM
ExtractReports.dbo.TAllData d WITH(NOLOCK)
INNER JOIN
parts.tradecodes tr WITH(NOLOCK) ON d.partid = tr.partid
AND d.codetypeid = tr.codetypeid
AND tr.partlevel = 0
AND d.code = tr.code
AND tr.zplid = 4239
LEFT JOIN
[ExtractReports].[dbo].[TradeCodesInsert] i WITH(NOLOCK) ON i.partid = tr.partid
AND i.codetypeid = tr.codetypeid
AND i.partlevel = tr.partlevel
AND i.partlevel = 0
AND tr.zplid = i.zplid
WHERE
i.partid IS NULL
Table 两个 tables 贸易代码和贸易代码插入的结构
CREATE TABLE [Parts].[TradeCodes]
(
[TradeCodesID] [int] IDENTITY(1,1) NOT NULL,
[PartID] [int] NOT NULL,
[Code] [varchar](20) NOT NULL,
[CodeTypeID] [int] NOT NULL,
[SourceTypeID] [bigint] NULL,
[RevisionID] [bigint] NULL,
[ModifiedDate] [datetime] NULL,
[CreatedDate] [datetime] NOT NULL,
[Modifiedby] [int] NULL,
[CreatedBy] [int] NULL,
[PartLevel] [tinyint] NULL,
[ZPLID] [int] NULL,
[MappingDoneFlag] [int] NOT NULL,
[MappingValueId] [int] NOT NULL,
CONSTRAINT [PK__TradeCod__FEFAF27527F7A1C3]
PRIMARY KEY CLUSTERED ([TradeCodesID] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [UC_PartCode]
UNIQUE NONCLUSTERED ([PartID] ASC, [CodeTypeID] ASC, [PartLevel] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE ExtractReports.dbo.TAllData
(
PartID INT,
Code VARCHAR(20),
CodeTypeID INT,
RevisionID BIGINT,
ZPLID INT,
ConCount INT,
FeatureName NVARCHAR(500),
FeatureValue NVARCHAR(500)
)
如何解决上面查询速度慢的问题?
完全创建那些索引:
CREATE INDEX X1 ON [dbo].[TradeCodesInsert] (partid, codetypeid, partlevel);
CREATE INDEX X2 ON parts.tradecodes (codetypeid, partlevel, zplid, partid) INCLUDE (RevisionID);
CREATE INDEX X2 ON ExtractReports.dbo.TAllData (code, codetypeid) INCLUDE (PartID , FeatureName, FeatureValue)
如果你没有。