From 49ff0a183232e19e90f09cedba57cee6968d3a65 Mon Sep 17 00:00:00 2001 From: cquest Date: Sun, 5 Jun 2016 20:24:47 +0200 Subject: [PATCH] faster /stats, no more count(*) --- backend.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/backend.py b/backend.py index d411610..2077f9a 100644 --- a/backend.py +++ b/backend.py @@ -45,12 +45,14 @@ class StatsResource(object): def on_get(self, req, resp): db = db_connect() cur = db.cursor(cursor_factory=psycopg2.extras.DictCursor) - cur.execute("SELECT count(*) as events_count, max(createdate) as last_created, max(lastupdate) as last_updated from events;") - stat = cur.fetchone() + # estimated row count, way faster then count(*) + cur.execute("SELECT reltuples FROM pg_class r WHERE relname = 'events';") + count = cur.fetchone()[0] + cur.execute("SELECT max(lastupdate) as last_updated from events;") + last = cur.fetchone()[0] cur.close() db.close() - - resp.body = dumps(dict(stat)) + resp.body = dumps(dict(events_count=count, last_updated=last)) resp.status = falcon.HTTP_200