John Machin wrote in news:b722bd36-c8f1-4cdf-8625-2550cee21511 @i28g2000prd.googlegroups.com in comp.lang.python:
> On May 13, 11:46 am, a...@pythoncraft.com (Aahz) wrote: >> In article <xns9c09513903e8frtwfreenetremovec...@216.196.109.145>, >> Rob Williscroft <r...@freenet.co.uk> wrote: >> >> >> >> >Aahz wrote innews:guao50$1j...@panix3.panix.comin comp.lang.python: >> >> In article <xns9c08e179b66d8rtwfreenetremovec...@216.196.109.145>, >> >> Rob Williscroft <r...@freenet.co.uk> wrote: >> >> >>>db.execute( ''' >> >>> update "sessions" set "uid" = ? >> >>> where "uid" = ? >> >>> and exists( >> >>> select * from "users" where "uid" > = ? >> >>> ) >> >>> ''', >> >>> (v['uid'],s.SID, v['uid']) >> >>> ) >> >> >> This will be more efficient if you do "select uid from users". >> >> >What will be more efficient ? >> >> >Do you mean the "select * ..." or do you want to take the exists >> >sub-query out and put it in a python if ? >> >> "select uid" will be more efficient than "select *", although I >> suppose I could be wrong about that given how little I know about >> current query optimizers. It seems the usual advice about premeture optimisation should apply, namely write clear code (*), then optimise the bottlenecks when you actualy find you need to. *) for some definition of "clear code". > My take is that it won't matter what you select if the optimiser is > smart enough; something that requires minimal resources to produce is > indicated in case the optimiser is dumb: > > ... exists (select 1 from ... ) I have to maintain some code writen by someone who thinks replacing "*" in queries with "1" is always a good idea (you know just in case), he wrote: select count(1) from ... of course it didn't do what he thought it did. Rob. -- http://www.victim-prime.dsl.pipex.com/
-- http://mail.python.org/mailman/listinfo/python-list