[ic] Optimisation Tip

Mike Heins mike at perusion.com
Wed Jul 31 11:53:07 UTC 2013


Quoting Stefan Hornburg (Racke) (racke at linuxia.de):
> On 07/30/2013 10:47 PM, IC wrote:
> > Hi Folks,
> > 
> > Whilst trying to optimise IC for speed today I noticed a slow sql query
> > every time an order was updated, I eventually traced it to /etc/ship_notice
> > 
> > This loop tag:-
> > 
> > [loop prefix=item search="
> > 		fi=orderline
> > 		st=db
> > 		sf=order_number
> > 		se=[loop-code]
> > 		ml=1000
> > 	"]
> > 
> > Produces an sql query of select * from orderline;
> > 
> > If the orderline table has a few hundred thousand rows it returns them all
> > and causes quite a delay, I replaced it with:-
> > 
> > [query
> > prefix=item
> > sql=|select * from orderline where order_number = '[loop-code]'|
> > type=list
> > ]
> > [item-list] 
> > 
> > Then used [item-param column_name] for the columns in the email, now its
> > lightning quick at updating an order.
> > 
> 
> Do you mind to produce a patch or even a Github pull request to get
> this into the Interchange repository?

I think that introducing co=1 and op=eq into the search spec will have 
the same effect, i.e..

 [loop prefix=item search="
 		fi=orderline
 		st=db
 		sf=order_number
 		se=[loop-code]
		co=1
		op=eq
 		ml=1000
 	"]

That may not be as intuitive as the query, but when mv_coordinate (co) = 1 and
the spec is an eq, it generates that query as the initial search selection.

I have made that patch for now, so if it is verified to work
then we can use it.

-- 
Mike Heins
Perusion -- Expert Interchange Consulting  http://www.perusion.com/
phone +1.765.253.4194 ... Ask me about jobs ...

Fast, reliable, cheap.  Pick two and we'll talk.
-- unknown



More information about the interchange-users mailing list