私は次の表を持っています:
CREATE TABLE 'tableA'(
`col1` int(11) NOT NULL AUTO_INCREMENT,
`col2` varchar(20) NOT NULL,
`col3` int(11) NOT NULL,
`col4` varchar(200) NOT NULL,
`col5` varchar(15) NOT NULL,
`col6` datetime NOT NULL,
PRIMARY KEY (`col1`),
UNIQUE KEY `col2,col3` (`col2`,`col3`),
KEY `col6` (`col6`)
) ENGINE=InnoDB AUTO_INCREMENT=1881208 DEFAULT CHARSET=utf8
日時列であるcol6にインデックスがあります。テーブルにはほぼ200万行あり、日付の範囲は2007年1月1日から2012年11月27日までです。
次のコマンドを実行すると、インデックスは使用されません。
EXPLAIN SELECT * FROM tableA ORDER BY col6 ASC
+----+-------------+----------+------+---------------+------+---------+------+---------+----------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+----------+------+---------------+------+---------+------+---------+----------------+
| 1 | SIMPLE | tableA | ALL | NULL | NULL | NULL | NULL | 1933765 | Using filesort |
+----+-------------+----------+------+---------------+------+---------+------+---------+----------------+
日時フィールドを整数に変換し、日時をUNIXタイムスタンプに変換してみました。ただし、それでも私のインデックスは使用されません。私は何が欠けていますか?オプティマイザがインデックスを使用するのではなく、多くの行(この場合は1,933,765行)を並べ替えることを主張するのはなぜですか?