7

MySQL 5の61のテーブル結合制限について読みましたが、それが以下にどのように適用されるかわかりません。

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などのDB間で異なりますか?

4

2 に答える 2

3

サブクエリごとに61のようです。これを示すフィドルがあります。

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

1行の単純なテーブルがあります。

id    | value
1     | testvalue

最初のクエリは単なるテーブルです。

2番目のクエリは、それ自体と61回テーブルを結合します。正常に動作します。

3番目のクエリには、61の結合を含むサブクエリがあり、それ自体がもう一度テーブルに結合されます。正常に動作します。

4番目のクエリはテーブルに62回結合します。失敗します。

于 2013-11-21T23:59:36.897 に答える
0

はい、クエリ全体に適用されます。私はこれに遭遇しました。SQL 2005では制限は256でした。2008にアップグレードしたばかりで、制限があるかどうかはわかりません。ここで公式の制限を確認してください:http://msdn.microsoft.com/en-us/library/ms143432.aspx ただし、最善の対策は、クエリを2つに分割するか、クエリの記述方法を変更することです。

于 2012-08-22T22:02:39.283 に答える