簡體   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