大概我错过了一些愚蠢的事情......显然MySQL 5.1一直在做一个Filesort,即使有一个索引完全匹配ORDER BY子句中的列。它张贴在这里,我过于简单的数据模型,但问题仍然发生:当索引存在时MySQL 5.1使用filesort事件
表定义:
CREATE TABLE `event` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`owner_id` int(11) DEFAULT NULL,
`date_created` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `owner_id` (`owner_id`),
KEY `date_created` (`date_created`),
CONSTRAINT `event_ibfk_1` FOREIGN KEY (`owner_id`) REFERENCES `user_profile` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
我的问题是,事件简单的SELECT正显示出“使用文件排序” :
explain select * from event order by date_created desc;
而结果的查询说明:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE event ALL NULL NULL NULL NULL 6 Using filesort
这种类型的查询有什么方法可以使用做一个文件夹的索引?
在此先感谢大家。
在这种情况下,强制的指标实际上将减少对小表的性能(随机I/O的目的,因为整个行不在可用索引树)。如果表格变大,优化器将使用索引。 – 2011-05-24 18:53:13