我知道,“SQL Server中的一个大小为9754的行不能大于8094的最大值”是由一个超过9k个字符的行引起的,它大于SQL Server 7中的页大小限制。但我不会根据下面的数据调用order by,那么为什么错误会说它不能排序呢?
SELECT <a number of columns...>
FROM Category10Master c10
JOIN Category20Master c20 ON c10.Cat10ID = c20.ParentCatID
JOIN Category25Master c25 ON c20.Cat20ID = c25.ParentCatID
JOIN Category30Master c30 ON c25.Cat25ID = c30 .ParentCatID
JOIN Item i ON c30.Cat30ID = i.ParentCatID
编辑:是的,我知道我可以调用更少的列来解决这个问题-实际的查询调用显式需要的列,但仍然超出行大小限制。这实际上是在一个称为站点范围的视图中,因此更改视图以减少列数并不是一个有吸引力的选项-需要修改数十个页面才能从视图以外的其他位置获取数据。我很不走运,插上了一个丑陋的设计,我希望有人有一个比少拉数据更有吸引力的解决方案。
最佳答案
检查排序的估计查询计划,要执行其中一个连接,它可能要选择一个合并连接(例如),要实现这一点,它需要在合并之前先对数据排序—此时您已经排序。