你有没有看到任何有错误消息?

--SQL服务器2000

不能分配的辅助表景或功能的决议。
最大数量的表格中查询(256)被超过。

--SQL服务器2005年

太多的表中的名称查询。最大允许为256。

如果是,你做了什么?

放弃?相信的客户来简化他们的要求?非标准化的数据库?


@(每个人都想要我以后的查询):

  1. 我不知道如果我可以贴70千字节的代码的答复编辑的窗口。
  2. 甚至如果我可以这不会帮助,因为这70千字节的代码将参考20或30意见,我还有职位,因为否则的代码将是毫无意义的。

我不想听起来像我拥有这里的但问题不是在查询。查询最佳(或至少几乎是最佳的).我已经花费无数小时的优化他们,在寻找每一个单列的每一个表,可以删除。想象一下一个报告,有200或300列有待填补一个选择声明(因为这是它的目的是几年前,当时它仍然是一个小型的报告)。

有帮助吗?

解决方案

为SQL服务器2005年,我建议使用表变量和部分建筑物的数据。

要做到这一点,创建一个表中的变量,它表示最后的结果设定的,你想发送给用户。

然后找到你主表(说该订单表在上面的例子)和拉数据,再加上一点点的补充数据,仅仅是说一项加入程(客户的名称、产品名称)。你可以做一个选择成为把这种觉到你的表变量。

从那儿,迭代表和每一行,做了一堆小小的选择的查询检索的所有补充数据,你需要为你的结果设定的。插入这些进每个柱。

一旦完成,然后你可以做一个简单的选择*从你的表变量和返回这一结果设置的用户。

我没有任何硬数据,为此,但已经有三个明显的实例,我曾在以日期在那里做这些较小的查询已经实际工作的速度比做一个大规模的选择查询有一大堆的联接。

其他提示

我从来没有遇到这种情况,并且是诚实的思想引用>256表在查询fils我有一个致命的恐惧。

你的第一个问题可能应该通过"为什么这么多?", 紧随其后的是"什么位的信息我 需要什么?" 我会担心,数据的数量返回从这些查询将会开始影响性能的应用相当严重。

@chopeen你可以改变你的方式计算这些统计数字,而不是保留一个单独表的所有每产品统计..当一个订单,循环,通过产品和更新适当的记录统计数据表。这将改变很多的计算载于结帐页,而不是运行的一切都在一个巨大的查询时运行的一份报告。当然也有一些统计数据,这不会的工作,以及这种方式,例如跟踪顾客的下一次采购之后购买某一特定产品。

这会发生所有的时间编写报告服务的报告CRM设施上运行的SQL Server2000年。客户关系管理的一个很好的标准化数据架构,其成果在许多的联接。实际上,有一个修复程序的周围,将上限额从256个到高达260: http://support.microsoft.com/kb/818406 (我们始终认为这是一个很好的开玩笑的一部分SQL服务器组).

该解决方案,因为Dillie-O aludes,是确定适当的"子加入"(优那些多次使用)和因素,他们出入临时表变量,然后用在你的主要联接。这是一个重大PIA往往杀害的性能。我对不起你。

@凯文喜欢这t恤--说它的所有:-).

我想看到查询的,但我想象它的一些问题与某种迭代,尽管我不能想到的任何情况下,其可能,我敢打赌这是一个糟糕的话/个案/标或一吨的执行不力的看法。

后查询:D

我也觉得一个可能的问题可能具有一吨(阅读200+)的姓名/价值的表格可以冷凝成一个查找表。

我有个同样的问题...我的发展框运行SQL服务器2008年(视工作的罚款),但在生产(与SQL服务器2005年)的看没有。我结束了创造意见,以避免这种限制,利用新的的景色的一部分查询的看法,即把错误。

那种愚蠢考虑到逻辑的执行是相同的...

有同样的问题在SQL服务器2005年(工作在2008)当我想到创建一个图。我解决这个问题通过创建一个存储的过程而不是一个图。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top