Mystery: functions are slow with group by, but...
От | Allan Kelly |
---|---|
Тема | Mystery: functions are slow with group by, but... |
Дата | |
Msg-id | 38FC7C4D.7D8E1C12@buildstore.co.uk обсуждение исходный текст |
Ответы |
Re: Mystery: functions are slow with group by, but...
|
Список | pgsql-sql |
Hi there. I appear to have much quicker performance by asking for more work! First of all, though: can I see the definition of a function in psql? \df total_live_a4_properties( text ) just gives me the args, return type etc. Hox can I see the AS '...' clause? Q2: I have a big performance problem using a function: create function total_live_a4_properties( text ) returns int4 as 'select count(*) from properties where status<>''sold'' and status<>''suspended'' and a4 = $1' language 'sql'; This takes 5-10 _minutes_ : select a4, total_live_a4_properties( a4 ) from properties group by a4; There are 5132 records in the properties table, and 64 distinct a4 values. Explain gives NOTICE: QUERY PLAN: Group ( cost=411.70 rows=5112 width=12) -> Sort ( cost=411.70 rows=5112 width=12) -> Seq Scan on Properties ( cost=411.70rows=5112 width=12) However this next one is < 3 _seconds_! select a4, count(*), (100*count(*)/total_live_a4_properties( a4 )) as percentage from properties group by a4; Explain gives NOTICE: QUERY PLAN: Aggregate ( cost=411.70 rows=5112 width=12) Group ( cost=411.70 rows=5112 width=12) -> Sort ( cost=411.70 rows=5112 width=12) -> Seq Scan on Properties ( cost=411.70 rows=5112 width=12) Can anyone tell me what's going on? thanks, al. -- # Allan Kelly http://www.plotsearch.co.uk# (+44) (0)131 524 8500# allan.kelly@buildstore.co.uk... ..# /Software Engineer/i . . . . .# ------------------------------ * . . . . .# "If you are a Visual Basic programmer, * . . .# these details are none of your business." * . . .# Mr Bunny's Guide to Active X, by Carlton Egremont III * . .# ------------------------------ vi: set noet tw=80 sts=4 ts=8 : .
В списке pgsql-sql по дате отправления: