Sql server SQL查询在与order by一起使用时需要无限时间

Sql server SQL查询在与order by一起使用时需要无限时间,sql-server,sql-order-by,Sql Server,Sql Order By,下面是我的SQL查询 select top(10) ClientCode FROM (((Branch INNER JOIN BusinessLocation ON Branch.BranchCode=BusinessLocation.BranchCode) INNER JOIN Center ON BusinessLocation.LocationCode = Center.LocationCode) INNER JOIN Groups ON Center.CenterCode = Gr

下面是我的SQL查询

select top(10) ClientCode
FROM (((Branch INNER JOIN BusinessLocation ON 
Branch.BranchCode=BusinessLocation.BranchCode) 
INNER JOIN Center ON BusinessLocation.LocationCode = Center.LocationCode) 
INNER JOIN Groups ON Center.CenterCode = Groups.CenterCode) 
INNER JOIN Client ON Groups.GroupCode = Client.GroupCode 
WHERE
((Client.CBStatus) IS NULL) AND ((Branch.PartnerName) in 
('SVCL','Edelweiss'))
order by Client.ClientCode DESC

当我在没有命令的情况下运行它时,它运行得很好,但有命令的情况下,它并没有完成执行。为什么会出现这种行为?

当您选择使用TOP语句时,不一定会计算每一行的计算和联接。尝试排序时,至少需要计算所有行的一个单元格。这是一个很长的查询,因为您的表很大,而且行为没有错误。不要让没有顺序的快速运行的查询在第二个查询的复杂性上误导您


您可以在clientcode列上创建索引。那会加快速度。

你们的桌子有多大?你在Client.ClientCode上有索引吗?总共1324738条记录,在Client.ClientCode上没有索引在联接列上添加索引。请注意:它一直运行到昨天,我有另一个查询,具有相同的联接和顺序,只是列选择不同,这仍然正常工作,这一个not@TimBiegeleisen ,如何在连接上设置索引?尝试过这个,但仍然在[dbo]。[Client]([clientcode]ASC)上创建非聚集索引[clientcode\u idx],并在[PRIMARY]上启用(PAD\u INDEX=OFF,STATISTICS\u norecocomputer=OFF,SORT\u IN\u TEMPDB=OFF,DROP\u EXISTING=OFF,ONLINE=OFF,ALLOW\u ROW\u LOCKS=on,ALLOW\u PAGE\u LOCKS=on)