あなたの問題は、問題が異なるということです。ST_GeomFromText は不変関数になるため、出力は入力のみに依存します。これは、プランナーがクエリの開始時に一度だけ実行できることを意味します。サブクエリを実行すると、ディスク アクセスなどを意味するジオメトリを検索する必要があることを意味します。最初に、クエリのために 1 回実行される少量の CPU アクティビティがあり、2 番目にディスク ルックアップがあります。
したがって、答えはある程度、それで何をしているかによって異なります。一般に、オプティマイザーは、設定に依存しない入力の型変換などを非常にうまく処理すると想定できます。
このように考えてみてください。
SELECT * FROM mytable WHERE my_geom = ST_GeomFromText(....);
これは、次の疑似コードのようなものに変換されます。
private_geom = ST_GeomFromText(....);
SELECT * FROM mytable WHERE my_geom = private_geom;
次に、そのクエリが計画され、実行されます。
クエリ内ルックアップを避けるためだけに往復を追加したくないのは明らかですが、ジオメトリがわかっている場合はST_GeomFromText(....)
、クエリでそれを指定することもできます。