2

LIMITメインテーブルとを含むクエリがありますJOIN

私の質問は次のとおりです。何が前に来るのですか?クエリはのx行を見つけLIMITJOINからこれらの行に実行する、最初JOINにすべての行で実行し、その直後に実行しLIMITますか?

4

2 に答える 2

3

LIMIT適用されるクエリに適用されます。これは、そのJOINクエリのsの後にクエリに適用されますが、派生テーブルが他のテーブルに編集されている場合は、その/それらが後に続きます。JOINJOIN

例えば

SELECT ..
  FROM (SELECT ..
          FROM TABLE1 T1
          JOIN TABLE2 T2 ON ..
         LIMIT 10) X
  JOIN OTHERTABLE Y
 LIMIT 20;
  • JOINT1とT2の間が最初に発生します
  • LIMIT前のステップの結果に10が適用されるため、この派生テーブルの10レコードのみが外部クエリで使用されます。
  • LIMITJOINXとYの間の結果に20が適用されます

LIMITはPostgreSQLMySQLSQLiteの特定のキーワードですが、TOPキーワードとSQ​​LServerでの処理は同じように機能します。

于 2012-10-29T04:15:01.310 に答える
1

最初にすべての行で JOIN を実行し、その直後に LIMIT を実行します

于 2012-10-29T04:18:16.187 に答える