filesort를 사용하고 인덱스를 사용하지 않는 매우 간단한 SELECT가 있습니다.MySQL :이 SQL 쿼리가 인덱스를 사용하지 않는 이유는 무엇입니까?
다음 쿼리 고려 :
CREATE TABLE `forum_topic` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`slug` varchar(255) NOT NULL,
`forum_id` int(10) NOT NULL DEFAULT '1',
`title` varchar(100) NOT NULL,
`topic_status` tinyint(1) NOT NULL DEFAULT '0',
`post_count` bigint(20) NOT NULL DEFAULT '0',
`modified_date` datetime NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `slug` (`slug`),
FULLTEXT KEY `title` (`title`),
KEY `modified` (`modified_date`, `topic_status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
는 EXPLAIN (여기 더 간단한 만들기 위해 몇 열을 박탈 )
SELECT * FROM forum_topic
WHERE topic_status = 0
ORDER BY modified_date LIMIT 0, 30
다음 표에를 다음과 같은 출력을 제공
id select_type table? partitions? type? possible_keys? key? key_len? ref? rows? Extra?
1 SIMPLE forum_topic NULL ALL NULL NULL NULL NULL 2075 Using where; Using filesort
설명문에 possible_keys에 NULL이 있고 모든 행을 스캔 한 후 filesort를 사용하는 방법을 알 수 있습니다.
감사.
'수정 된'색인은 필드를 거꾸로 가질 수 있습니다. 얼마나 많은 행이 있습니까? –