使用SELECT DISTINCT时SQL挂起

时间:2016-10-10 15:09:07

标签: sql-server distinct

当我尝试从链接表运行简单的Select Distinct查询时,SQL Server挂起。 “执行查询。等待数据源的响应。”然后返回错误:超时已过期。操作完成之前经过的超时时间或服务器没有响应。

SELECT DISTINCT UR_RISK_ID AS [Risk ID]
FROM         FWLIVE..LMDATA.UDS_RISK

没有“独特”,它很好并且运行得非常快。

有什么想法?

1 个答案:

答案 0 :(得分:0)

select distinct基本上与:

相同
SELECT UR_RISK_ID AS [Risk ID]
FROM FWLIVE..LMDATA.UDS_RISK
GROUP BY UR_RISK_ID;

换句话说,引擎必须做很多工作才能删除重复项。我建议在UDS_RISK(UR_RISK_ID)上创建一个索引,这样索引就可以用于查询。

我还应该注意SELECT可以在遇到它们时开始返回行。 SELECT DISTINCT需要在返回任何行之前处理所有数据。如果表中有唯一的id,那么可能还有其他选项可以更快地返回某些行。