选择在SQL服务器中花费大量时间

时间:2017-02-06 07:26:14

标签: sql-server

我正在尝试在SQL Server中运行以下查询,但它需要大约1小时才能运行。表' dbo.AccessControl'有大约300万条记录和' dbo.username'表有3.5k记录。有没有办法优化这个查询,因为我不认为单个左连接应该花费这么多时间只有300万条记录。

select isd.*,ac.username1+','+ac.Username2+','+ac.Username3 as UserName 
into dbo.username
from dbo.details isd
left outer join dbo.AccessControl ac
on isd.LocationId=ac.LocationId
and isd.DepartmentId=ac.DepartmentId
and isd.productId=ac.productId;

1 个答案:

答案 0 :(得分:0)

  

有没有办法优化这个查询,因为我不认为单个左连接应该花费这么多时间只有300万条记录。

在你的情况下,我认为可能存在某种锁定,阻塞导致此查询运行这么长时间,或者你可能不得不遇到某种瓶颈..

要找出,为什么你的查询运行这么多时间...在一个单独的窗口中运行以下查询(你也可以使用Activity监视器来显示它)

select   status,command,blocking_session_id,wait_type,last_Wait_type
from sys.dm_exec_requests where session_id=<<select into sessionid>>

这应该能给你一些关于发生什么的线索..

如果您使用的是版本&gt; SQL2014,您可以按照以下步骤

了解查询的实时状态
    Set statistics profile on
   your query

然后在单独的窗口中运行以下查询

select * from sys.dm_exec_query_profiles
 where session_id=your session id