[英]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.