【发布时间】:2010-12-01 01:42:27
【问题描述】:
我有一张带有日期时间 (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 ;
【问题讨论】:
-
能否请您发布您的表的定义?只需运行
SHOW CREATE TABLE Cars -
100 行需要 300 微秒?每行 3 微秒?这种表现并不烂。
标签: mysql indexing performance filesort