从SQL Server中巨大的表中select独特/独特的行,没有超时错误

我在SQL Server中有大约400,000行的表。 不幸的是,这个表有许多重复的行,因为没有主键。 我正在使用SELECT DISTINCT来获取所有唯一的行,但是由于有很多这样的行,我总是收到超时错误。 解决这个问题的最好方法是什么?

好问题。 改善超时 – 提高价值。 或者投入更多的权力。 从技术上来说,400.000行并不是很多,所以对于一个体面的服务器来说,这将会非常快。 否则 – 如果你有IO问题,因为你的“服务器”只有一对(硬盘)….那么你的IO会杀了你。

基本上,DISTINCT在tempdb中触发一个临时的结果创build – 所以tempdb很重。

但最后,我会增加超时,特别是如果这只是一次性的操作。

顺便说一下,你要说的是HUGH表在哪里? 400.000是微不足道的。

加快速度的最佳解决scheme是在需要select的字段上添加一个索引。 在数据库引擎必须筛选结果而没有索引的情况下,使用select语句本质上需要服务器遍历表中的每一行。