2015-09-15 106 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)上的索引也会有所帮助。