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();
Page 35
|