rows
The rows column indicates the number of rows MySQL believes it must examine
to execute the query.

----- Original Message -----
From: "David Wolf" <[EMAIL PROTECTED]>
To: "Tore Van Grembergen" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>
Sent: Sunday, October 28, 2001 5:09 PM
Subject: Re: Optimizing query (2nd attempt)


> I seem to have fixed it.. I ran myisamchk on all the tables--and now the
> indexes work as expected.. Very strange indeed.. Though, there is a
strange
> twist now: explain reports fewer rows to be checked than are displayed
with
> the query runs.. Is that normal?
>
> David
>
> ----- Original Message -----
> From: "Tore Van Grembergen" <[EMAIL PROTECTED]>
> To: "David Wolf" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>
> Sent: Sunday, October 28, 2001 8:57 AM
> Subject: Re: Optimizing query (2nd attempt)
>
>
> > maybe you heva to declare a compound index with userid and username.
> > the sql parser now does not use the index on username.
> >
> > ----- Original Message -----
> > From: "David Wolf" <[EMAIL PROTECTED]>
> > To: "Tore Van Grembergen" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>
> > Sent: Sunday, October 28, 2001 4:46 PM
> > Subject: Re: Optimizing query (2nd attempt)
> >
> >
> > > Yes.. There is an index on users.username :)
> > >
> > > David
> > >
> > > ----- Original Message -----
> > > From: "Tore Van Grembergen" <[EMAIL PROTECTED]>
> > > To: "David Wolf" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>
> > > Sent: Sunday, October 28, 2001 8:46 AM
> > > Subject: Re: Optimizing query (2nd attempt)
> > >
> > >
> > > > do you have an index defined on users.username ?
> > > >
> > > >
> > > > ----- Original Message -----
> > > > From: "David Wolf" <[EMAIL PROTECTED]>
> > > > To: <[EMAIL PROTECTED]>
> > > > Sent: Sunday, October 28, 2001 4:26 PM
> > > > Subject: Optimizing query (2nd attempt)
> > > >
> > > >
> > > > > I have a query as follows:
> > > > >
> > > > > SELECT log.entity, log.action,
> > > > >   LEFT(users.username,10) AS username,
> > > > >   LEFT(boards.title,15) AS Board,
> > > > >   LEFT(topics.subject,22) as Subject,
> > > > >   log.postid, log.extraid,
> > > > >   LEFT(from_unixtime(log.logtime),19) AS time, log.ip
> > > > > FROM log LEFT JOIN users ON log.userid = users.id
> > > > >   LEFT JOIN boards ON log.boardid=boards.id
> > > > >   LEFT JOIN topics ON log.topicid = topics.id
> > > > > WHERE log.logTime > UNIX_TIMESTAMP("2000-10-26 23:00:00")
> > > > >   AND users.username="testuser";
> > > > >
> > > > > When I run an 'explain' on it, I get:
> > > > >
> > > > >
> > > >
> > >
> >
>
+--------+--------+---------------+---------+---------+-------------+-------
> > > > > --+------------+
> > > > > | table  | type   | possible_keys | key     | key_len | ref
> |
> > > rows
> > > > > | Extra      |
> > > > >
> > > >
> > >
> >
>
+--------+--------+---------------+---------+---------+-------------+-------
> > > > > --+------------+
> > > > > | log    | ALL    | time          | NULL    |    NULL | NULL
> |
> > > > > 1192384 | where used |
> > > > > | users  | eq_ref | PRIMARY       | PRIMARY |       4 | log.userId
> |
> > > > > 1 | where used |
> > > > > | boards | eq_ref | PRIMARY       | PRIMARY |       4 |
log.boardId
> |
> > > > > 1 |            |
> > > > > | topics | eq_ref | PRIMARY       | PRIMARY |       4 |
log.topicId
> |
> > > > > 1 |            |
> > > > >
> > > >
> > >
> >
>
+--------+--------+---------------+---------+---------+-------------+-------
> > > > > --+------------+
> > > > > 4 rows in set (0.01 sec)
> > > > >
> > > > > Now.. If I exclude the 'users.username="testuser"' and substitute
it
> > for
> > > > the
> > > > > userid that I got in a previous query (i.e. userid=2) so that the
> > query
> > > > > becomes:
> > > > >
> > > > > SELECT log.entity, log.action,
> > > > >   LEFT(users.username,10) AS username,
> > > > >   LEFT(boards.title,15) AS Board,
> > > > >   LEFT(topics.subject,22) as Subject,
> > > > >   log.postid, log.extraid,
> > > > >   LEFT(from_unixtime(log.logtime),19) AS time, log.ip
> > > > > FROM log LEFT JOIN users ON log.userid = users.id
> > > > >   LEFT JOIN boards ON log.boardid=boards.id
> > > > >   LEFT JOIN topics ON log.topicid = topics.id
> > > > > WHERE log.logTime > UNIX_TIMESTAMP("2000-10-26 23:00:00")
> > > > >   AND log.userid=2;
> > > > >
> > > > >
> > > > >  and run an explain, I get...
> > > > >
> > > > >
> > > >
> > >
> >
>
+--------+--------+---------------+---------+---------+-------------+-------
> > > > > +------------+
> > > > > | table  | type   | possible_keys | key     | key_len | ref
> |
> > > rows
> > > > > | Extra      |
> > > > >
> > > >
> > >
> >
>
+--------+--------+---------------+---------+---------+-------------+-------
> > > > > +------------+
> > > > > | log    | ref    | time,userid   | userid  |       4 | const
> |
> > > > 27198
> > > > > | where used |
> > > > > | users  | eq_ref | PRIMARY       | PRIMARY |       4 | log.userId
> |
> > > > 1
> > > > > |            |
> > > > > | boards | eq_ref | PRIMARY       | PRIMARY |       4 |
log.boardId
> |
> > > > 1
> > > > > |            |
> > > > > | topics | eq_ref | PRIMARY       | PRIMARY |       4 |
log.topicId
> |
> > > > 1
> > > > > |            |
> > > > >
> > > >
> > >
> >
>
+--------+--------+---------------+---------+---------+-------------+-------
> >
> > > > > +------------+
> > > > > 4 rows in set (0.00 sec)
> > > > >
> > > > > Big difference from 1.19million rows to 27198 rows... My question
is
> > > this.
> > > > > How can I optimize the query with the left joins so that the
> optimizer
> > > > will
> > > > > first grab the userid from the username and then use the userid
> index
> > on
> > > > log
> > > > > to return the results fast?
> > > > >
> > > > > Thanks in advance,
> > > > >
> > > > > David
> > > > >
> > > > >
> > > > >
> > > > >
> > > >
> > ---------------------------------------------------------------------
> > > > > Before posting, please check:
> > > > >    http://www.mysql.com/manual.php   (the manual)
> > > > >    http://lists.mysql.com/           (the list archive)
> > > > >
> > > > > To request this thread, e-mail <[EMAIL PROTECTED]>
> > > > > To unsubscribe, e-mail
> > > <[EMAIL PROTECTED]>
> > > > > Trouble unsubscribing? Try:
> http://lists.mysql.com/php/unsubscribe.php
> > > > >
> > > > >
> > > >
> > > >
> > >
> ---------------------------------------------------------------------
> > > > Before posting, please check:
> > > >    http://www.mysql.com/manual.php   (the manual)
> > > >    http://lists.mysql.com/           (the list archive)
> > > >
> > > > To request this thread, e-mail <[EMAIL PROTECTED]>
> > > > To unsubscribe, e-mail
> > > <[EMAIL PROTECTED]>
> > > > Trouble unsubscribing? Try:
http://lists.mysql.com/php/unsubscribe.php
> > > >
> > > >
> > >
> > >
> > > ---------------------------------------------------------------------
> > > Before posting, please check:
> > >    http://www.mysql.com/manual.php   (the manual)
> > >    http://lists.mysql.com/           (the list archive)
> > >
> > > To request this thread, e-mail <[EMAIL PROTECTED]>
> > > To unsubscribe, e-mail
> <[EMAIL PROTECTED]>
> > > Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php
> > >
> > >
> >
> >
> > ---------------------------------------------------------------------
> > Before posting, please check:
> >    http://www.mysql.com/manual.php   (the manual)
> >    http://lists.mysql.com/           (the list archive)
> >
> > To request this thread, e-mail <[EMAIL PROTECTED]>
> > To unsubscribe, e-mail
> <[EMAIL PROTECTED]>
> > Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php
> >
> >
>
>
> ---------------------------------------------------------------------
> Before posting, please check:
>    http://www.mysql.com/manual.php   (the manual)
>    http://lists.mysql.com/           (the list archive)
>
> To request this thread, e-mail <[EMAIL PROTECTED]>
> To unsubscribe, e-mail <[EMAIL PROTECTED]>
> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php
>
>


---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to