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. > > -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]