假设我有一个Big
和一个Bigger
表。 我需要循环访问Big
表,该表被索引但不是顺序的(因为它是按顺序索引的Bigger
表的过滤器)。T-SQL在Big表中循环时的性能困境(详细内部)
对于这个例子,假设我需要遍历大约20000行。
我应该做的这些
set @currentID = (select min(ID) from myData where ID > @currentID)
或
创建(大)临时顺序进行分度表(Big
表的副本),并做20000
@Row = @Row + 1
20000?
我想为012取得下一个ID做表的20000个过滤器很重,但是为了添加一个虚拟身份列,必须填写一个大的(大小)的临时表。
解决方案是否在其他地方? 例如,如果我可以遍历select语句的结果(Bigger
表的过滤器,它产生“表”(实际上是一个结果集)Big
),而不需要创建临时表,这将是理想的,但我似乎无法添加类似于IDENTITY(1,1)虚拟列的内容到结果中。
谢谢!
'myData'表如何适合这个?我需要查看示例数据,因为我不知道你在问什么。 – 2011-04-05 15:35:52
您需要告诉我们更多关于您想要完成的内容以及(大概)SQL Server版本的信息。很可能您可以在单个查询中完成,而无需循环。 – Thomas 2011-04-05 16:00:47
只有20K项目需要处理,而且你遇到性能问题? – JohnOpincar 2011-04-05 17:11:14