我有一张带有日期时间(DATE)和位(PUBLIC)的汽车表。
现在我想获取按 DATE 和 PUBLIC = 1 排序的行,所以我使用:
select
c.*
from
Cars c
WHERE
c.PUBLIC = 1
ORDER BY
DATE DESC
但不幸的是,当我使用解释来查看发生了什么时,我有这个:
1 SIMPLE a ALL IDX_PUBLIC,DATE NULL NULL NULL 103 Using where; Using filesort
当我只有 100 行时,获取这些数据需要 0.3 毫秒。有没有其他方法可以禁用文件排序?
如果我去索引我有索引 (PUBLIC, DATE) 不是唯一的。
表定义:
CREATE TABLE IF NOT EXISTS `Cars` (
`ID` int(11) NOT NULL auto_increment,
`DATE` datetime NOT NULL,
`PUBLIC` binary(1) NOT NULL default '0'
PRIMARY KEY (`ID`),
KEY `IDX_PUBLIC` (`PUBLIC`),
KEY `DATE` (`PUBLIC`,`DATE`)
) ENGINE=MyISAM AUTO_INCREMENT=186 ;