对于sql Server 2005,我建议您使用表变量并随需而建部分数据。
为此,请创建一个表变量,该变量代表要发送给用户的最终结果集。
然后找到您的主表(例如上面示例中的orders表)并提取该数据,以及一些补充数据,这些补充数据仅说一个联接即可(客户名称,产品名称)。您可以执行SELECT INTO将其直接放入表变量中。
从那里开始,遍历表,并针对每一行,执行一堆小的SELECT查询,以检索结果集所需的所有补充数据。将它们插入到每一列中。
完成后,您可以从表变量中执行简单的SELECT *,并将此结果集返回给用户。
我对此没有任何确切的数字,但是到目前为止,我已经研究了三个不同的实例,这些实例实际上比使用大量联接执行大型选择查询要快。