Ihr Problem ist, dass die Probleme unterschiedlich sind. ST_GeomFromText wird eine unveränderbare Funktion sein, so dass die Ausgabe nur von der Eingabe abhängt. Dies bedeutet, dass der Planer sie zu Beginn der Abfrage einmal ausführen kann. Das Ausführen einer Unterabfrage bedeutet, dass Sie die Geometrie nachschlagen müssen, was Festplattenzugriff usw. bedeutet. In der ersten Phase haben Sie ein wenig CPU-Aktivität, die einmal für die Abfrage ausgeführt wird, und auf der zweiten Seite haben Sie Nachschlagevorgänge.
So hängt die Antwort in gewissem Maße davon ab, was Sie damit machen. Im Allgemeinen können Sie davon ausgehen, dass der Optimierer Dinge wie Typkonvertierungen bei der Eingabe, bei denen diese nicht von den Einstellungen abhängig sind, ziemlich gut verarbeiten kann.
Denken Sie darüber nach.
SELECT * FROM mytable WHERE my_geom = ST_GeomFromText(....);
Dies wird in etwa wie folgt Pseudo-Code umgewandelt:
private_geom = ST_GeomFromText(....);
SELECT * FROM mytable WHERE my_geom = private_geom;
Dann wird die Abfrage geplant und ausgeführt.
Offensichtlich möchten Sie keine Rundreisen hinzufügen, um Abfragen in Abfragen zu vermeiden, aber wo Sie die Geometrie kennen, können Sie sie auch über ST_GeomFromText(....)
in Ihrer Abfrage angeben.