Ive sehr seltsames Problem, wenn ich Abfrage wie unten ausführen:seltsame Leistung von Postgres Abfrage
with ap as (
SELECT id from adress limit 1000)
)
SELECT distinct house.id, house.date
FROM house
WHERE house.adressid in (select id from ap)
LIMIT 9999
I ge die resulkts innerhalb von 100 ms
Aber wenn ich die Grenze auf 10 ändern dann Im a bekommen Ergebnis nach 20 s
with ap as (
SELECT id from adress limit 1000)
)
SELECT distinct house.id, house.date
FROM house
WHERE house.adressid in (select id from ap)
LIMIT 10
natürlich Index auf adressid
istCREATE INDEX house_idx
ON house
USING btree
(adressid COLLATE pg_catalog."default");
Im Haus gibt es wie 9 Millionen Zeilen.
Hat jemand eine Idee hoiw kann ich versuchen, die Leistung zu verbessern. Ive reduziert das Problem auf diesen sehr einfach, aber die Struktur ist viel komplexer, das ist in Wirklichkeit, warum ich Dich mit Tisch bietet didnt Pläne erstellen und Abfrage ...
I unter Verwendung von EXPLAIN ANALYZE, um herauszufinden, beginnen würde, wie postgresql tatsächlich die zwei Abfragen zu verarbeiten. – Gary
Sie haben die Abfrage möglicherweise stark vereinfacht. Postgres (es sei denn, es hat eine sehr ungewöhnliche Optimierung) sollte die gleiche Arbeit für beide Abfragen machen - es muss die gesamte Liste für das 'select distinct' generieren, bevor das äußere' limit' angewendet wird. Es könnte etwas anderes passieren. –
Eigentlich ist das die einzige Sache, die ich verändere – Snorlax