| 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: | Whole Thread | Raw Message | 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 #
| 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 ? |