Re: very simple but slow query

2008-05-21 Thread Wakan
Thanks very much to all who suggest me to use a JOIN instead of the IN clause, which performances are very poor vs join ones, as I read in http://www.artfulsoftware.com/infotree/queries.php#568: Both the |IN()| and |EXISTS()| queries have to execute a table scan for each row in the table.

Re: very simple but slow query

2008-05-20 Thread Rob Wultsch
On Tue, May 20, 2008 at 11:33 AM, Perrin Harkins <[EMAIL PROTECTED]> wrote: > If that subselect only returns a single result, try using = instead of > IN. MySQL performed very poorly on OR queries before version 5. It > would avoid using indexes. The new index merge stuff in version 5 > fixed th

Re: very simple but slow query

2008-05-20 Thread Perrin Harkins
On Tue, May 20, 2008 at 7:05 AM, Wakan <[EMAIL PROTECTED]> wrote: > can someone could explain where are problems in this query: > > EXPLAIN > SELECT ID > FROM ven_tes > WHERE ID IN (SELECT ID FROM ven_tes WHERE ID_ven=6573) If that subselect only returns a single result, try using = instead of IN.

Re: very simple but slow query

2008-05-20 Thread Eric Frazier
We use a sub select on a 8M+ row table because it takes better advantage of indexes. SELECT startip,endip FROM geodb a WHERE a.startip = (SELECT max(startip) FROM geodb WHERE b.startip <= 3250648033) AND a.endip >= 3250648033; startip and endip are INT(10) unsigned and unique keys. This ret

Re: very simple but slow query

2008-05-20 Thread Ananda Kumar
in mysql sub queries dont perform well. You can could try this SELECT a.ID FROM ven_tes a, ven_tes b where a.id=b.id and b.id_ven=6573 . On 5/20/08, Wakan <[EMAIL PROTECTED]> wrote: > > Hi, > can someone could explain where are problems in this query: > > EXPLAIN > SELECT ID > FROM ven_tes

very simple but slow query

2008-05-20 Thread Wakan
Hi, can someone could explain where are problems in this query: EXPLAIN SELECT ID FROM ven_tes WHERE ID IN (SELECT ID FROM ven_tes WHERE ID_ven=6573) +++-+-++-+-+--+--+--+ | id | se