Ich habe eine SQL-Abfrage ähnlich wie unten:Wie optimiert man die SQL-Abfrage für Postgres?
select *
from TableA
left outer join TableB on...
left outer join TableC on...
...
left outer join TableN on...
where
TableA.id in (subquery);
Diese Abfrage dauert eine lange Zeit auszuführen, und ich überprüfte den Ausführungsplan davon und und fand heraus, dass es die erste tat verbindet und dann die, wo. Die Verknüpfung dauert jedoch lange. Ich führe die gleiche Abfrage gegen Oracle und Oracle hat die Optimierung so, dass es den "wo" -Teil zusammen mit den Joins macht und damit die Zeit viel zu kurz ist.
Meine Frage ist: Wie kann ich die SQL-Abfrage optimieren, so dass Postgres den 'Where' Teil zuerst tun kann?
PS: Ich kann die Unterabfrage nicht in den "von" -Teil mit einem inneren Join hinzufügen, da ich Hibernate verwende und keine Unterabfrage in 'from' -Teil unterstützt.
Überprüfen Sie https://StackOverflow.com/Tags/Postgresql-Performance/info, um zu sehen, was die beantwortbare Postgresql-Performance-Frage im Wesentlichen liefern sollte. – zerkms
'... es Unterabfrage in 'von' Teil nicht unterstützt.Wenn Ihre Werkzeuge nicht funktionieren: Holen Sie sich andere Werkzeuge. – wildplasser
BTW: Ich glaube nicht, dass Hibernate Unterabfragen als Table-Ausdrücke nicht akzeptiert. Vielleicht muss ein Fall von "Unterabfrage einen Alias haben"? – wildplasser