2015-09-15 105 views
-2

我正在嘗試使用下面的腳本創建臨時表,並且這是永久佔用的。我希望有人可能會提供一些關於如何重寫代碼以加快速度的提示。減少創建臨時表的時間

Select ProductName, 
     Convert(date, messagereceived) as ProcessDate, 
     datepart(hour,messagereceived) as ProcessHour, 
     Pipename,Partnername, 
     DaTEDIFF(SECOND,MessageCreated,MessageReceived) as TransitTime, 
     DaTEDIFF(SECOND,MessageReceived,ProcessingStarted) as WaitTime, 
     DaTEDIFF(SECOND,ProcessingStarted,ProcessingFinished) as ProcessingTime 
into #Temp 
from Table ml 
inner join MessagingProduct mp on ml.MessagingProductId=mp.ProductId 
where ml.processingstarted > '2015-09-08' and ml.processingstarted < '2015-09-09' 
AND 
ml.MessagingSystemId=1 
+2

「永遠」有多久?你的源表是什麼樣的?他們目前有哪些指標?它們包含多少數據? –

回答

0

對於此查詢:

Select . . . 
into #Temp 
from Table ml inner join 
    MessagingProduct mp 
    on ml.MessagingProductId = mp.ProductId 
where ml.processingstarted > '2015-09-08' and 
     ml.processingstarted < '2015-09-09' AND 
     ml.MessagingSystemId = 1 ; 

你想在表中的索引。最重要的指標是Table(MessagingSystemId, processingStarted, MessagingProductId)上的綜合指數。另外,MessagingProduct(ProductId, ProductName)上的索引也會有所幫助。