Re: Rules and Triggers

From: Jan Wieck <janwieck(at)yahoo(dot)com>
To: Josh Berkus <josh(at)agliodbs(dot)com>
Cc: Ludwig Lim <lud_nowhere_man(at)yahoo(dot)com>, pgsql-sql(at)postgresql(dot)org
Subject: Re: Rules and Triggers
Date: 2002-05-17 18:19:31
Message-ID: 200205171819.g4HIJVa07333@saturn.janwieck.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Josh Berkus wrote:
> Ludwig,
>
> > I tried converting the rule to function & trigger
> > and it reported that it used an Index scan given the
> > same INSERT statement.
> >
> > I was wondering why the rule used sequentail scan
> > and the equivalent function trigger used index scan.
>
> This is one of the documented differences between rules and triggers
> (at least, I've seen it in the documentation *somewhere*). I can't
> tell you "why", though ... hopefully Tom or Bruce will speak to that.

Neither is *that* one of the differences between rules and
triggers, nor *should* something like that be documented
instead of fixed.

There might be a difference in the selectivity when using
OLD/NEW Var nodes vs. $n parameters, and therefore a
different estimate by the optimizer. But in general rule
generated queries are using indexes.

Of course, that requires up to date statistics. Are the
tables ANALYZE'd properly?

> For myself, I use triggers for most things, and rules just for
> updatable views. Aside for index efficiency, rules are a Postgres-only
> thing, whereas several RDBMS's support triggers. Gives me marginally
> better portability.

As long as your queries only affect very few rows, you'll not
notice much of a performance difference. Try updating a
couple thousand rows with one UPDATE. A trigger will fire a
couple thousand times, where a rule does all the work in one
additional query.

Jan

--

#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me. #
#================================================== JanWieck(at)Yahoo(dot)com #

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Stephan Szabo 2002-05-17 18:42:43 Re: Constraint problem
Previous Message Masaru Sugawara 2002-05-17 16:51:50 Re: how to build this list ?