インデックスを再定義する方法を入力しようとしている複数の同様の投稿を調べましたが、これを把握することはできません。 ORDER BY文を含めるたびに、ファイルセットを使用して結果セットを返します。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 |
+----+-------------+-------+------+---------------+----------+---------+-------------+------+-----------------------------+
私はあなたの設定をテストしました。インデックスはうまく使用されているようですが、なぜfilesortが使用されていると思いますか? EXPLAIN SELECT 's'.'title'、... [...] possible_keys:idx_grid_default キー:idx_grid_default エクストラ: – Gryphius
奇妙なその場所を使用して - 私は「ここで使用して、filesortレコードを使用する」を取得する - ので、あなたは 'filesort'を使って何を得る場合、私はのErm – snucky
上記の説明参照してください?あなたはそれであなたを悩ませているのですか?それが間違っていると思いますか?それが何を意味するか知っていますか? –