terça-feira, 9 de outubro de 2012

PostgreSQL - Função que retorna o custo da query


CREATE OR REPLACE FUNCTION public.getsqlcost(p_sql text) RETURNS numeric AS
$BODY$
DECLARE
v varchar;
BEGIN
-- Result  (cost=0.00..0.01 rows=1 width=0)
EXECUTE 'EXPLAIN ' || p_sql INTO v;
RETURN CAST(split_part(TRIM(SUBSTRING(upper(v) FROM 'COST=(.+) ROWS')), '..', 2) AS numeric);
END;
$BODY$
LANGUAGE plpgsql;

SELECT * FROM getsqlcost('SELECT clock_timestamp()');