インデックスの使用を拒否するテーブルがあり、常にfilesortを使用しています。
表は次のとおりです。
CREATE TABLE `article`( `ID` int(11)NOT NULL AUTO_INCREMENT、 `Category_ID` int(11)DEFAULT NULL、 `サブカテゴリ`int(11)DEFAULT NULL、 `CTimestamp`タイムスタンプNOTNULLDEFAULT CURRENT_TIMESTAMP、 `公開`tinyint(4)DEFAULT NULL、 `Administrator_ID` int(11)DEFAULT NULL、 `Position` tinyint(4)DEFAULT '0'、 主キー( `ID`)、 KEY `Subcategory`(` Subcategory`、 `Position`、` CTimestamp`、 `Publish`)、 KEY `Category_ID`(` Category_ID`、 `CTimestamp`、` Publish`)、 KEY `Position`(` Position`、 `Category_ID`、` Publish`)、 KEY `CTimestamp`(` CTimestamp`)、 CONSTRAINT `article_ibfk_1`外部キー(` Category_ID`)参照 `category`(` ID`) )ENGINE = InnoDB AUTO_INCREMENT = 94290 DEFAULT CHARSET = utf8
クエリは次のとおりです。
SELECT*FROM記事ORDERBY`CTimestamp`;
説明は次のとおりです。
+ ---- + ------------- + --------- + ------ + ------------- -+ ------ + --------- + ------ + ------- + --------------- -+ | id | select_type | テーブル| タイプ| possible_keys | キー| key_len | ref | 行| エクストラ| + ---- + ------------- + --------- + ------ + ------------- -+ ------ + --------- + ------ + ------- + --------------- -+ | 1 | シンプル| 記事| すべて| NULL | NULL | NULL | NULL | 63568 | filesortの使用| + ---- + ------------- + --------- + ------ + ------------- -+ ------ + --------- + ------ + ------- + --------------- -+
「ORDERBY」を削除すると、すべてが正常に機能しています。他のすべてのインデックス(サブカテゴリ、位置など)は、他のクエリで正常に機能しています。残念ながら、私の単純なselectクエリでも、タイムスタンプの使用は拒否されます。私はここで重要な何かを見逃していると確信しています。
MySQLにタイムスタンプインデックスを使用させるにはどうすればよいですか?
ありがとうございました。