2016-09-08 11 views
0

私はコード内のクエリ文字列を構築していると私は、新しいパラメータを追加するために見る最も簡単な方法は、サブクエリにこのような何かを追加することです:PostgreSQLのサブクエリにネスト制限がありますか?

query = "SELECT * FROM table"; 
query = "SELECT * FROM (" + query 
     + MessageFormat.format(") as subquery where x = {0}", y); 
query += ";"; 

だから私は最後に、このようなサブクエリのかなり多くを持っていると私かもしれません限界があるのだろうかと思って、私はヒットするかもしれない。

+1

私はそうは思わない。ビューは本質的にちょうどサブクエリなので、ネストされた深さは表示されるよりもはるかに深いことがあります。しかし、それはかなり簡単にテストする必要があります。あなたが今までに予想していたよりも1000倍深い簡単な例を繰り返すだけです... – MatBailie

+0

理論上:かろうじて。実際には:それは依存しています。ところで、あなたの例はあまりにも些細なので、オプティマイザはおそらくそれを展開します。 :: select 'FROM(select * FROM(select * from t))a)b;'は単純な 'select * from t;'に減らすことができます。 – wildplasser

答えて

1

本当に - あなたは先に試してみるべきです。しかし、私はそこにパフォーマンスの影響があると信じています。可能な範囲で、結合とそのような直接的な方法を使用します。

0

私は同様のユースケースであっても、自分自身をネストしたサブクエリを広範囲に使用しています。私はPostgreSQLで何らかの制限に達していません。たとえば、MySQLでは、第1レベルのサブクエリ内のフィールドのみを参照できるため、状況は異なります。どんなに深くてもあなたは幸運を逃れています。

関連する問題