yes, I tried : mysql> explain SELECT forumid,visible,sticky,dateline FROM `abc` WHERE `forumid` = 25 AND `visible` = 1 AND `sticky` = 0 order by dateline \G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: abc type: ref possible_keys: forumid_2,forumid key: forumid key_len: 8 ref: const,const,const rows: 24 Extra: Using where; Using index 1 row in set (0.00 sec)
and tried : mysql> explain select threadid,thread_type_id,forumid,title,lastpost,open,replycount,postusername,postuserid,lastpostid,lastposter,lastpostuserid,dateline,views,visible,sticky,goodnees,votenum,votetotal,attach,hiddencount,deletedcount,pid from abc where `forumid` = 25 AND `visible` = 1 AND `sticky` = 0 order by dateline \G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: abc type: ref possible_keys: forumid_2,forumid key: forumid_2 key_len: 3 ref: const rows: 24 Extra: Using where; Using filesort 1 row in set (0.00 sec) but why ? Must I use it by force index ? Todd Lyons <tly...@ivenue.com> writes: > 2010/11/4 Changying Li <lchangy...@gmail.com>: >> PRIMARY KEY (`threadid`), >> KEY `dateline` (`dateline`), >> KEY `forumid_2` (`forumid`,`thread_type_id`,`visible`,`sticky`,`dateline`), >> KEY `forumid` (`forumid`,`visible`,`sticky`,`dateline`) >> ) ENGINE=InnoDB AUTO_INCREMENT=660 DEFAULT CHARSET=utf8; >> >> mysql> explain SELECT * FROM `abc` WHERE `forumid` = 25 AND `visible` = 1 >> AND `sticky` = 0 order by dateline \G >> possible_keys: forumid_2,forumid >> key: forumid_2 >> Extra: Using where; Using filesort >> >> why it choose forumid_2, not forumid ? > > 5.0 docs online say: > > With EXPLAIN SELECT ... ORDER BY, you can check whether MySQL can use > indexes to resolve the query. It cannot if you see Using filesort in > the Extra column. See Section 7.2.1, “Optimizing Queries with > EXPLAIN”. > > Your query is using filesort, so it cannot according to the above statement. > > The docs also say in section 7.3.1.11 that it might not use an index if: > > The key used to fetch the rows is not the same as the one used in the > ORDER BY... > > I'm curious, if you change the SELECT to a few named fields instead of > *, does it affect the key choice? If you only select on fields in the > key (i.e. a covering index) does it still choose what you consider to > be the wrong key? > -- > Regards... Todd > I seek the truth...it is only persistence in self-delusion and > ignorance that does harm. -- Marcus Aurealius -- Thanks & Regards Changying Li -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/mysql?unsub=arch...@jab.org