我查看了多個類似的帖子,試圖獲得關於如何重新定義我的索引的輸入,但無法弄清楚這一點。每次我包含ORDER BY語句時,它都會使用filesort返回結果集。mysql單表SELECT查詢ORDER BY導致FILESORT
這裏的表定義和查詢:
SELECT
`s`.`title`,
`s`.`price`,
`s`.`price_sale`
FROM `style` `s`
WHERE `s`.`isactive`=1 AND `s`.`department`='women'
ORDER
BY `s`.`ctime` DESC
CREATE TABLE IF NOT EXISTS `style` (
`id` mediumint(6) unsigned NOT NULL auto_increment,
`ctime` timestamp NOT NULL default CURRENT_TIMESTAMP,
`department` char(5) NOT NULL,
`isactive` tinyint(1) unsigned NOT NULL,
`price` float(8,2) unsigned NOT NULL,
`price_sale` float(8,2) unsigned NOT NULL,
`title` varchar(200) NOT NULL,
PRIMARY KEY (`id`),
KEY `idx_grid_default` (`isactive`,`department`,`ctime`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=47 ;
而且,這裏的解釋結果集,我得到:
+----+-------------+-------+------+---------------+----------+---------+-------------+------+-----------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+---------------+----------+---------+-------------+------+-----------------------------+
| 1 | SIMPLE | s | ref | idx_grid | idx_grid | 6 | const,const | 3 | Using where; Using filesort |
+----+-------------+-------+------+---------------+----------+---------+-------------+------+-----------------------------+
我測試了你的設置,這個索引似乎用得很好,你爲什麼認爲正在使用一個文件夾? EXPLAIN SELECT's'.'title',... [...] possible_keys:idx_grid_default 鍵:idx_grid_default 額外:使用哪裏 – Gryphius
這很奇怪 - 我得到一個「使用這裏;使用的filesort」 - 看我上面的 – snucky
嗯解釋,所以,如果你得到了什麼'使用filesort'?什麼讓你感到困擾?你認爲這是錯的還是?你知道這意味着什麼嗎? –