Sha256: 0371f7e0f1902fb6ede22cf4574ba5943732373e6d244141e4dc237e4ce7aa32

Contents?: true

Size: 600 Bytes

Versions: 161

Compression:

Stored size: 600 Bytes

Contents

/*
A plpgsql function by Michael Fuhr for faster counting.
See https://wiki.postgresql.org/wiki/Count_estimate
Normal count(*) can be slow where that are millions of rows.
This is a faster way to count filtered rows by parsing the output of an explain query.
*/
CREATE FUNCTION count_estimate(query text) RETURNS INTEGER AS
$func$
DECLARE
    rec   record;
    ROWS  INTEGER;
BEGIN
    FOR rec IN EXECUTE 'EXPLAIN ' || query LOOP
        ROWS := SUBSTRING(rec."QUERY PLAN" FROM ' rows=([[:digit:]]+)');
        EXIT WHEN ROWS IS NOT NULL;
    END LOOP;

    RETURN ROWS;
END
$func$ LANGUAGE plpgsql;

Version data entries

161 entries across 161 versions & 1 rubygems

Version Path
renalware-core-2.0.84 db/functions/count_estimate_v01.sql
renalware-core-2.0.83 db/functions/count_estimate_v01.sql
renalware-core-2.0.82 db/functions/count_estimate_v01.sql
renalware-core-2.0.81 db/functions/count_estimate_v01.sql
renalware-core-2.0.80 db/functions/count_estimate_v01.sql
renalware-core-2.0.79 db/functions/count_estimate_v01.sql
renalware-core-2.0.78 db/functions/count_estimate_v01.sql
renalware-core-2.0.77 db/functions/count_estimate_v01.sql
renalware-core-2.0.76 db/functions/count_estimate_v01.sql
renalware-core-2.0.75 db/functions/count_estimate_v01.sql
renalware-core-2.0.74 db/functions/count_estimate_v01.sql
renalware-core-2.0.73 db/functions/count_estimate_v01.sql
renalware-core-2.0.72 db/functions/count_estimate_v01.sql
renalware-core-2.0.71 db/functions/count_estimate_v01.sql
renalware-core-2.0.70 db/functions/count_estimate_v01.sql
renalware-core-2.0.69 db/functions/count_estimate_v01.sql
renalware-core-2.0.68 db/functions/count_estimate_v01.sql
renalware-core-2.0.67 db/functions/count_estimate_v01.sql
renalware-core-2.0.64 db/functions/count_estimate_v01.sql
renalware-core-2.0.63 db/functions/count_estimate_v01.sql