Are you sure this not because your query is cached by the MySQL query cache
now ? (try RESET QUERY CACHE before testing your query to be sure)
Regards,
Jocelyn Fournier
www.presence-pc.com
----- Original Message -----
From: "Dirk Schippers" <[EMAIL PROTECTED]>
To: "Jocelyn Fournier" <[EMAIL PROTECTED]>
Cc: <[EMAIL PROTECTED]>
Sent: Saturday, September 18, 2004 11:53 PM
Subject: Re: Query takes terribly long
> Hello,
>
> Now this I don't understand, now the query takes only 0.05s on any of
> the two indexes.
> I didn't do anything! Not even the analyze table I was going to try!
>
> I'll keep you posted, thank you for the explanation, I understand the
> reason for the filesort now.
>
> Dirk.
>
> Jocelyn Fournier wrote:
>
> >Hi,
> >
> >Well that's strange MySQL says more rows will be returned.
> >How many times does the query takes ?
> >And if you run ANALYZE TABLE on your table, does this change anything
about
> >rows statistics ?
> >
> >MySQL do not need filesort with this kind of index, because it can use
the
> >index to retrieve the row in the right order directly.
> >
> >Regards,
> > Jocelyn Fournier
> > www.presence-pc.com
> >----- Original Message -----
> >From: "Dirk Schippers" <[EMAIL PROTECTED]>
> >To: "Jocelyn Fournier" <[EMAIL PROTECTED]>
> >Cc: <[EMAIL PROTECTED]>
> >Sent: Saturday, September 18, 2004 11:37 PM
> >Subject: Re: Query takes terribly long
> >
> >
> >
> >
> >>Hello,
> >>
> >>I added the index you said, but mysql (yes 4.x) still prefers using the
> >>other index {put,front,topcategory,approvedby}.
> >>And indeed, he uses the filesort. When I force into using your index, it
> >>seems to be even slower (more rows but no filesort as you said)
> >>
> >>But I have a question about that, why would your index avoid a filesort?
> >>I don't understand that.
> >>
> >>Any other suggestion on how to speed up?
> >>
> >>Anyway, thanks for all the help,
> >>Dirk.
> >>
> >>Jocelyn Fournier wrote:
> >>
> >>
> >>
> >>>Hi,
> >>>
> >>>You can try to add an index on (put,front,topcategory,putdatetime) to
> >>>
> >>>
> >avoid
> >
> >
> >>>MySQL has to do a filesorting on the data returned. (I assume you're
> >>>
> >>>
> >using
> >
> >
> >>>MySQL 4.x)
> >>>
> >>>Regards,
> >>> Jocelyn Fournier
> >>> www.presence-pc.com
> >>>
> >>>----- Original Message -----
> >>>From: "Dirk Schippers" <[EMAIL PROTECTED]>
> >>>To: <[EMAIL PROTECTED]>
> >>>Sent: Saturday, September 18, 2004 10:25 PM
> >>>Subject: Query takes terribly long
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>>Hello,
> >>>>
> >>>>I have this MyISAM table "story" (52MB):
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
>
>>+-------------+---------------------+------+-----+---------------------+--
-
> >>
> >>
> >-
> >
> >
> >>>------------+
> >>>
> >>>
> >>>
> >>>
> >>>>| Field | Type | Null | Key | Default
|
> >>>>Extra |
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
>
>>+-------------+---------------------+------+-----+---------------------+--
-
> >>
> >>
> >-
> >
> >
> >>>------------+
> >>>
> >>>
> >>>
> >>>
> >>>>| id | int(10) unsigned | | PRI | [NULL]
|
> >>>>auto_increment |
> >>>>| sequelof | int(10) unsigned | | | 0
> >>>>| |
> >>>>| prevsequel | int(10) unsigned | | | 0
> >>>>| |
> >>>>| userid | int(10) unsigned | | MUL | 0
> >>>>| |
> >>>>| title | varchar(255) | YES | | [NULL]
> >>>>| |
> >>>>| topcategory | tinyint(3) unsigned | | | 1
> >>>>| |
> >>>>| category | tinyint(3) unsigned | | | 1
> >>>>| |
> >>>>| rated | tinyint(1) unsigned | | | 0
> >>>>| |
> >>>>| language | tinyint(3) unsigned | | | 0
> >>>>| |
> >>>>| font | int(10) unsigned | | | 1
> >>>>| |
> >>>>| fontsize | varchar(4) | | | 2
> >>>>| |
> >>>>| story | mediumtext | | |
> >>>>| |
> >>>>| note | text | | |
> >>>>| |
> >>>>| adddatetime | datetime | | | 0000-00-00 00:00:00
> >>>>| |
> >>>>| putdatetime | datetime | | MUL | 0000-00-00 00:00:00
> >>>>| |
> >>>>| put | tinyint(1) | | MUL | 0
> >>>>| |
> >>>>| putby | int(10) unsigned | | | 0
> >>>>| |
> >>>>| approvedby | int(10) unsigned | | | 0
> >>>>| |
> >>>>| blockbot | tinyint(1) unsigned | | | 0
> >>>>| |
> >>>>| front | tinyint(1) | | | 1
> >>>>| |
> >>>>| selection | tinyint(1) | | | 0
> >>>>| |
> >>>>| timesread | int(10) unsigned | | | 0
> >>>>| |
> >>>>| ipnumber | varchar(20) | | |
> >>>>| |
> >>>>| words | int(11) | | | 0
> >>>>| |
> >>>>| review | tinyint(1) unsigned | | MUL | 0
> >>>>| |
> >>>>| avgscore | int(10) unsigned | YES | | [NULL]
> >>>>| |
> >>>>| numvotes | int(10) unsigned | YES | | [NULL]
> >>>>| |
> >>>>| numreacts | int(10) unsigned | YES | | [NULL]
> >>>>| |
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
>
>>+-------------+---------------------+------+-----+---------------------+--
-
> >>
> >>
> >-
> >
> >
> >>>------------+
> >>>
> >>>
> >>>
> >>>
> >>>>with indexes: id = primary, putdatetime, userid,
> >>>>{put,front,topcategory,approvedby} and review.
> >>>>
> >>>>If I want to know the 30 most recently added and approved items, I do
> >>>>the following simple query:
> >>>>SELECT id FROM story WHERE put=1 AND front=1 AND topcategory=1 ORDER
BY
> >>>>putdatetime DESC LIMIT 0,30
> >>>>
> >>>>This query sometimes takes up to 10 seconds!!!
> >>>>I must admit that the cache is disabled at this moment (I want to see
> >>>>realistic timings), but still I think 10 seconds is terribly long to
> >>>>retrieve 30 id's!
> >>>>
> >>>>Explain tells me that it is using the index
> >>>>{put,front,topcategory,approvedby} and narrows the query to 5475 rows
> >>>>(of the total of 18818).
> >>>>
> >>>>The table will certainly grow a lot in the future so I am very worried
> >>>>about the performance.
> >>>>What can I do about this? Is there any way to improve this?
> >>>>Enabling the cache is not an option as the data in the table is
altered
> >>>>a lot.
> >>>>
> >>>>Anyone?
> >>>>
> >>>>Dirk.
> >>>>
> >>>>--
> >>>>
> >>>>Schippers Dirk
> >>>>Zaakvoerder Frixx-iT
> >>>>http://www.frixx-it.com
>
>>>>------------------------------------------------------------------------
> >>>>Bezoek ook http://www.verhalensite.com voor uw literaire
tekortkomingen.
> >>>>
> >>>>
> >>>>--
> >>>>MySQL General Mailing List
> >>>>For list archives: http://lists.mysql.com/mysql
> >>>>To unsubscribe:
> >>>>
> >>>>
> >http://lists.mysql.com/[EMAIL PROTECTED]
> >
> >
> >>>>
> >>>>
> >>>>
> >>>>
> >>>
> >>>
> >>>
> >>>
> >>--
> >>
> >>Schippers Dirk
> >>Zaakvoerder Frixx-iT
> >>http://www.frixx-it.com
> >>------------------------------------------------------------------------
> >>Bezoek ook http://www.verhalensite.com voor uw literaire tekortkomingen.
> >>
> >>
> >>
> >>
> >
> >
> >
> >
>
> --
>
> Schippers Dirk
> Zaakvoerder Frixx-iT
> http://www.frixx-it.com
> ------------------------------------------------------------------------
> Bezoek ook http://www.verhalensite.com voor uw literaire tekortkomingen.
>
>
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]