From: | devik(at)cdi(dot)cz |
---|---|
To: | Christof Petig <christof(dot)petig(at)wtal(dot)de> |
Cc: | Karel Zak <zakkr(at)zf(dot)jcu(dot)cz>, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>, Michael Meskes <meskes(at)postgresql(dot)org>, Zeugswetter Andreas SB <ZeugswetterA(at)wien(dot)spardat(dot)at>, The Hermit Hacker <scrappy(at)hub(dot)org> |
Subject: | Re: Query caching |
Date: | 2000-11-10 10:40:09 |
Message-ID: | 3A0BD089.4ADD47C1@cdi.cz |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Did someone think about query costs ? Is you prepare
query like SELECT id FROM t1 WHERE type=$1 and
execute it with $1=1 and 2. For 1 there is one record
in t1 a all other have type=2.
Without caching, first query will use index, second
not.
Should cached plan use index or not ?
devik
Christof Petig wrote:
>
> Karel Zak wrote:
>
> > On Wed, 8 Nov 2000, Christof Petig wrote:
> >
> > > Karel Zak wrote:
> > >
> > > > > What about parameters? Normally you can prepare a statement and execute it
> > > >
> > > > We have in PG parameters, see SPI, but now it's used inside backend only
> > > > and not exist statement that allows to use this feature in be<->fe.
> > >
> > > Sad. Since ecpg would certainly benefit from this.
>
> Postponed for future improvements ...
>
> > > > PREPARE chris_query AS SELECT * FROM pg_class WHERE relname = $1 USING text;
> > >
> > > I would prefer '?' as a parameter name, since this is in the embedded sql standard
> > > (do you have a copy of the 94 draft? I can mail mine to you?)
> >
> > This not depend on query cache. The '$n' is PostgreSQL query parametr
> > keyword and is defined in standard parser. The PREPARE statement not parsing
> > query it's job for standard parser.
>
> I see.
>
> > > Also the standard says a whole lot about guessing the parameter's type.
> > >
> > > Also I vote for ?::type or type(?) or sql's cast(...) (don't know it's syntax)
> > > instead of abusing the using keyword.
> >
> > The postgresql executor expect types of parametrs in separate input (array).
> > I not sure how much expensive/executable is survey it from query.
>
> That would involve changing the parser. Future project.
>
> > > > EXECUTE chris_query USING 'pg_shadow';
> > >
> > > Great idea of yours to implement this! Since I was thinking about implementing a
> > > more decent schema for ecpg but had no mind to touch the backend and be-fe
> > > protocol (yet).
> > > It would be desirable to do an 'execute immediate using', since using input
> > > parameters would take a lot of code away from ecpg.
> >
> > By the way, PREPARE/EXECUTE is face only. More interesting in this period is
> > query-cache-kernel. SQL92 is really a little unlike my PREPARE/EXECUTE.
>
> I'm looking forward to get first experiences with the query cache kernel. I think it's
> the right way to go.
>
> Christof
From | Date | Subject | |
---|---|---|---|
Next Message | Christof Petig | 2000-11-10 10:52:48 | Re: Re: [INTERFACES] USE OF CURSORS IN ECPG |
Previous Message | Peter Mount | 2000-11-10 10:27:32 | RE: [INTERFACES] JDBC 'Unterminated quoted string' |