我已经读到了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?
发布于 2013-11-22 07:59:37
每个子查询似乎有61个。这里有一个小提琴演示了这一点。
http://sqlfiddle.com/#!2/2b219/5
我有一个简单的表,只有一行:
id | value
1 | testvalue第一个查询就是表。
第二个查询将表与自身联接61次。它工作得很好。
第三个查询有一个包含61个联接的子查询,该子查询本身再次与表联接。它工作得很好。
第四个查询将表联接62次。它失败了。
发布于 2012-08-23 06:02:39
是的,它适用于整个查询。我遇到过这样的情况。在SQL 2005中,该限制为256。我们刚刚升级到2008年,我不确定是否有限制。在这里查看官方限制:http://msdn.microsoft.com/en-us/library/ms143432.aspx然而,最好的做法是要么将查询一分为二,要么改变它的编写方式。
https://stackoverflow.com/questions/11953995
复制相似问题