7

I have read about the 61 table join limit in MySQL 5, but I'm not sure how it would apply to the folllowing:

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...
)

Would I hit the limit with 61 tables in total across all the subqueries, or would it be 61 per UNIONed subquery?

Does this vary across DBs e.g. PostgreSQL, MSSQL, Oracle?

4

2 回答 2

3

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

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

我有一个简单的表格,只有一行:

id    | value
1     | testvalue

第一个查询只是表。

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

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

第四个查询连接表 62 次。它失败。

于 2013-11-21T23:59:36.897 回答
0

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

于 2012-08-22T22:02:39.283 回答