MySQL에서 색인을 사용하여 이러한 행을 정렬하고 싶습니다.범위에서 MySQL ORDER BY 최적화
SELECT
identity_ID
FROM
identity
WHERE
identity_modified > 1257140905
ORDER BY
identity_modified
그러나 이것은 정렬을 위해 파일롯을 사용합니다 (바람직하지 않음).
여기에서 ORDER BY 절을 끝내면 행이이라는 WHERE 절을 만족시키기 위해 색인을 사용하는 결과로 간단히 정렬되어 나온 것입니다 ().
WHERE 절을 남겨두고 원하는 동작을 얻을 수 있지만 MySQL의 동작이 순서에 맞게 일관성있게 유지되고 MySQL이 변경된 경우 나중에 스팅 될 수 있습니다. 그것의 내부 행동.
어떻게해야합니까? 인덱스는 (B-tree) 순서로 저장되기 때문에 파일 포 트가 필요 없다는 것을 MySQL에 알리는 방법은 무엇입니까?
표는이 (간체)과 같습니다
CREATE TABLE IF NOT EXISTS `identity` (
`identity_ID` int(11) NOT NULL auto_increment,
`identity_modified` int(11) NOT NULL,
PRIMARY KEY (`identity_ID`),
KEY `identity_modified` (`identity_modified`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
여기 내 이해를 명확히하기 위해 identity_modified를 분류하고 다른 필드는 분류하지 않겠습니까? 또는 포인트가 누락되었습니다 – Treby
요점은, 특정 날짜 이후에 수정 된 모든 레코드를 검색하고 마지막으로 수정 한 날짜로 정렬하고자합니다. 나는 MySQL이 이것을 위해서 filesort를해야하는 것을 원하지 않는다; 그것은 테이블의 대부분을 정렬해야 할 수 있습니다. MySQL은 인덱스 행을 순서대로 저장하므로 filesort는 필요하지 않습니다. – thomasrutter
주문에 대한 또는하지 않고이 검색어에 대한 설명을 게시 할 수 있습니까? 나에게 그것은 전체 스캔과 정렬 중 하나이거나 정렬없이 인덱스를 사용하는 것이다 (얼마나 많은 레코드가 페치되어 있는가에 따라). – Pomyk