繁体   English   中英

临时表内部联接性能降低

[英]Temp Table Inner Join Slow Performance

我有带有列PID的temp表。 我还有另一个存储所有PID的table 但是,当我在PID上进行inner join ,速度非常慢。 您有什么主意来优化代码?

临时表:

CREATE TABLE #tmp
(
    [PID] [nvarchar] (255) COLLATE Cyrillic_General_CI_AS NOT NULL, 
)

表:

CREATE TABLE [dbo].[PIDs]
(
    [ID] [int] NOT NULL IDENTITY(1, 1),
    [PID] [nvarchar] (20) COLLATE Cyrillic_General_CI_AS NOT NULL
)

CREATE UNIQUE NONCLUSTERED INDEX [IX_PIDs_PID] 
    ON [dbo].[PIDs] ([PID]) ON [PRIMARY]

查询:

SELECT * 
FROM #tmp
INNER JOIN dbo.PIDs AS cft ON cft.PID  = c.PID 

临时表中的记录为200000。物理表中的记录为400000。

您的问题很可能是由于您的临时表未建立索引这一事实造成的。 您有两个nvarchar列(宽度可变),每个查找都必须是表扫描。 为了加快速度,您应该在临时表上创建索引,或者甚至可以将其设为主键。 如果进行查找,则无需重复。

也有其他可能性,但是问题中没有足够的信息可辨别。 这是在存储过程中吗? 多个进程是否同时调用它?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM