Re: [HACKERS] Optimizer speed and GEQO (was: nested loops in joins)
От | Bruce Momjian |
---|---|
Тема | Re: [HACKERS] Optimizer speed and GEQO (was: nested loops in joins) |
Дата | |
Msg-id | 199902042158.QAA19463@candle.pha.pa.us обсуждение исходный текст |
Ответ на | Optimizer speed and GEQO (was: nested loops in joins) (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-hackers |
> The main thing that jumps out from the profiles is that on these complex > searches, the optimizer spends practically *all* of its time down inside > better_path, scanning the list of already known access paths to see if a > proposed new path is a duplicate of one already known. (Most of the time > it is not, as shown by the small number of times path_is_cheaper gets > called from better_path.) This scanning is O(N^2) in the number of paths > considered, whereas it seems that all the other work is no worse than O(N) > in the number of paths. The bottom of the duplicate check is equal(), > which as you can see is getting called a horrendous number of times. > > It would be worth our while to try to eliminate this mostly-unsuccessful > comparison operation. > > I wonder whether it would work to simply always add the new path to the > list, and rely on the later "prune" step to get rid of duplicates? > The prune code is evidently far more efficient at getting rid of useless > entries than better_path is, because it's nowhere near the top of the > profile even though it's processing nearly as many paths. You are definately on to something here. I have added comments and more to the optimizer README as I continue exploring options. -- Bruce Momjian | http://www.op.net/~candle maillist@candle.pha.pa.us | (610) 853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania19026
В списке pgsql-hackers по дате отправления: