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