Dear all,

first let me thank the PostgreSQL developers for implementing the incredibly 
helpful window functions. This is one of the features I use most often.

But, as my requirements are perhaps a bit special, I always want more ;)
Now I am trying to implement my own window function using C-Language-Functions 
and the window function API, which, by the way, gives a very nice interface for 
developing my own window functions.

My function needs a very long time to execute while the underlying algorithm 
should be relatively fast.

Currently I access rows of the window partition using the 
WinGetFuncArgInPartition function. However, what I noticed is that this 
function seems incredibly slow when the partition looked at is rather large - 
for my case about 1245000 rows. I call that function about 10 times for each 
row at the first row of each partition (using more or less a random access 
schema) and compute some summary statistics. When I just randomly stop the 
running function with a debugger, it nearly always seems to be caught in 
BufFileRead(), thus my assumption is that this function and the call to 
WinGetFuncArgInPartition is the bottleneck of my function.

Is anybody able to explain why I get such bad runtimes? And even better, do you 
see a way to speed up WinGetFuncArgInPartition or replace it by something more 
performant? Would linear access be faster?

Thank you for your support.
Thilo Schneider

P.S.: I know my question might be better suited the hackers-list. However, as 
all questions should be asked elsewhere first, let's have a try :)




******************************************

******************************************


Fraport AG
Frankfurt Airport Services Worldwide
60547 Frankfurt am Main

Sitz der Gesellschaft:
Frankfurt am Main
Amtsgericht Frankfurt am Main: HRB 7042
Umsatzsteuer-Identifikationsnummer: DE 114150623

Vorsitzender des Aufsichtsrates:
Karlheinz Weimar - Hessischer Finanzminister a.D.

Vorstand:
Dr. Stefan Schulte (Vorsitzender)
Herbert Mai
Peter Schmitz
Dr. Matthias Zieschang
******************************************
Diese E-Mail kann vertrauliche und/oder rechtlich geschuetzte Informationen 
enthalten.
Wenn Sie nicht der richtige Adressat sind oder diese E-Mail irrtuemlich 
erhalten haben, informieren Sie bitte sofort den Absender und vernichten Sie 
diese Mail. Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser Mail 
ist nicht gestattet.

This e-mail may contain confidential and/or privileged information. If you are 
not the intended recipient (or have received this e-mail in error) please 
notify the sender immediately and destroy this e-mail. Any unauthorized 
copying, disclosure or distribution of the material in this e-mail is strictly 
forbidden.
******************************************

Reply via email to