Re: Query Planner wählt langsamen Bitmap Heap Scan statt Index Scan bei Limit
"Robert J. Rotter" <[email protected]> Mon, 19 Oct 2015 07:35:03 +0200
| Newsgroups | gmane.comp.db.postgresql.german |
|---|---|
| Message-ID | <OF11D637B4.5C9985C0-ONC1257EE3.001E2827-C1257EE3.001EACC8@notes.denic.de> |
Hans-Jürgen Schönig <[email protected]> schrieb am 16.10.2015 14:53:38: > das verhalten, das du siehst, ist ganz natürlich. > irgendwann sieht der optimizer, dass du immer mehr und mehr blöcke aus der tabelle benötigst. dem versucht er mit einem bitmap > scan entgegen zu wirken, weil er annimmt, dass der index aufgrund von immer mehr random I/O für ihn geschätzt zu teuer wird. > real muss das nicht sein - kann aber sein (je nach caching, correlation on disk, etc.). > im prinzip gibts drei methoden: Ja. Das leuchtet ein. > a.) set enable_bitmapscan TO off … und hoffen, dass er beim index bleibt. > b.) set random_page_cost TO 1; … das macht random I/O relativ zur sequential I/O billiger und sollte ihn länger auf index scna halten > c.) versuch es mal mit einem sequential scan. wenn du genug daten löscht, kann das durchaus auch schneller sein > Super. Danke für die vielen Vorschläge. Ich habe die Lösung a) gewählt, das sie mich schnell zum Ziel führt. > ein sequential scan ist bei solchen dingen oft gar nicht so schlecht wie sein ruf. > in summe ist es halt so, dass der planner die abschätzungen macht und entsprechend dem kostenmodell handelt. > das kostenmodell ist natürlich nur bedingt real. Guter Hinweis. Ich werde das für zukünftige Probleme im Hinterkopf behalten. Viele Dank für die prompte Hilfe Robert
smime.p7s
(application/x-pkcs7-signature, 8.1 KB) - not displayed