I (must) use a Postgres 8.4 Database. In this Database i create a function:
CREATE OR REPLACE FUNCTION counter (mindate timestamptz,maxdate timestamptz) RETURNS integer AS $func$
DECLARE result integer;
BEGIN
Select INTO result COUNT(*) AS counter from columname where starttime BETWEEN $1 and $2;
Return result;
END
$func$ LANGUAGE plpgsql;
The Query:
apptelemetry=# select counter('2016-03-01 00:00:00','2016-03-11 00:00:00');
requestcounter
----------------
8893
(1 row)
Time: 4.740 ms
When i make a normal Query:
apptelemetry=# select Count(*) from columname where starttime BETWEEN '2016-03-01 00:00:00' AND '2016-03-11 00:00:00';
count
-------
8893
(1 row)
Time: 3.214 ms
Why is the function slower than the normal query? Have someone performance tips for me?
Regrads
starttimebecause this shouldnt be so slow no matter the order.PL/pgSQLfor this. The 1ms overhead could well be caused by the overhead of calling PL/pgSQL. What happens if you change that to a simplelanguage sqlfunction?