PostgreSQL: Advanced SQL: Improving performance at the SQL level

  • SELECT count(*) FROM largetbl;
  • Results in sequential scan
  • User triggers or rules to update a one line table
02 CREATE TABLE largetblc (i int);
03 INSERT INTO largetblc VALUES(0);
04 CREATE RULE largecins AS ON INSERT TO largetbl DO UPDATE largetblc SET i=i +
1;
05 CREATE OR REPLACE FUNCTION sublargetblc() RETURNS trigger AS '
06      BEGIN
07      EXECUTE ''UPDATE largetblc SET i=i - 1;'';
08      RETURN NEW;
09      END;
10 ' LANGUAGE plpgsql;
11 CREATE TRIGGER largetbltrig AFTER DELETE ON largetbl
12     FOR EACH ROW EXECUTE PROCEDURE sublargetblc();
Prev

Next

Page 35