Maxim Zaslavsky Asked: 2010-04-04 20:12:57 +0800 CST2010-04-04 20:12:57 +0800 CST 2010-04-04 20:12:57 +0800 CST 从 SQL Server 中的巨大表中选择不同/唯一的行而不会出现超时错误 772 我在 SQL Server 中有一个大约 400,000 行的表。不幸的是,这个表有很多重复的行,因为没有主键。我SELECT DISTINCT用来获取所有唯一行,但由于它们太多,我不断收到超时错误。解决这个问题的最佳方法是什么? sql-server sql timeout 2 个回答 Voted Best Answer TomTom 2010-04-04T21:27:04+08:002010-04-04T21:27:04+08:00 好问题。改善超时 - 提高价值。或者投入更多的力量。从技术上讲,400.000 行并不是很多,因此对于一个体面的服务器来说它会非常快。否则 - 如果你有 IO 问题,因为你的“服务器”只有一个(一对)硬盘......那么你的 IO 会杀了你。 基本上,DISTINCT 会在 tempdb 中触发临时结果创建 - 所以它是 tempdb 重的。 但最后,我会增加超时,特别是如果这只是一次操作。 顺便说一句,从这个角度来看——你说的 HUGH 桌子在哪里?400.000 的大小是微不足道的。 Ron 2010-04-04T21:25:43+08:002010-04-04T21:25:43+08:00 加快此速度的最佳解决方案是在您需要选择的字段上添加一个索引。使用数据库引擎必须在没有索引的情况下过滤结果的选择语句本质上需要服务器遍历表中的每一行。
好问题。改善超时 - 提高价值。或者投入更多的力量。从技术上讲,400.000 行并不是很多,因此对于一个体面的服务器来说它会非常快。否则 - 如果你有 IO 问题,因为你的“服务器”只有一个(一对)硬盘......那么你的 IO 会杀了你。
基本上,DISTINCT 会在 tempdb 中触发临时结果创建 - 所以它是 tempdb 重的。
但最后,我会增加超时,特别是如果这只是一次操作。
顺便说一句,从这个角度来看——你说的 HUGH 桌子在哪里?400.000 的大小是微不足道的。
加快此速度的最佳解决方案是在您需要选择的字段上添加一个索引。使用数据库引擎必须在没有索引的情况下过滤结果的选择语句本质上需要服务器遍历表中的每一行。