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

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 |

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 WHERE

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

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. MySQL

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 that.