最大SQL连接表数限制是否适用于整个查询,还是单独计算子查询?

时间:2012-08-14 14:03:05

标签: mysql sql join

我已经阅读了MySQL 5中的61 table join limit,但我不确定它将如何适用于以下内容:

SELECT * FROM (

    SELECT * FROM tableA JOIN // Lots of other joins here...

    UNION

    SELECT * FROM tableB JOIN // Lots of other joins here...

    UNION

    SELECT * FROM tableC JOIN // Lots of other joins here...

    // etc...
)

我是否会在所有子查询中共有61个表,或者每个UNIONed子查询是61个?

这会因数据库而异吗? PostgreSQL,MSSQL,Oracle?

2 个答案:

答案 0 :(得分:3)

每个子查询似乎是61。这是一个证明这一点的小提琴。

http://sqlfiddle.com/#!2/2b219/5

我有一行简单的表格:

id    | value
1     | testvalue

第一个查询只是表格。

第二个查询将表与自身连接61次。它工作正常。

第三个查询有一个包含61个连接的子查询,它本身又与表连接了一次。它工作正常。

第四个查询加入表62次。它失败了。

答案 1 :(得分:0)

是的,它适用于整个查询。我碰到了这个。在SQL 2005中,限制为256.我们刚刚升级到2008,我不确定是否有限制。查看官方限制:http://msdn.microsoft.com/en-us/library/ms143432.aspx但是,最好的做法是将查询拆分为两个或更改其编写方式。