나는 datetime (DATE) 및 bit (PUBLIC) 테이블이 있습니다. 이제filesort를 사용하여 MySQL의 datetime 열 정렬
내가 1 그래서 내가 사용 = DATE에 의해 PUBLIC와 함께 주문 행을 싶습니다 :
select
c.*
from
Cars c
WHERE
c.PUBLIC = 1
ORDER BY
DATE DESC
을하지만 불행하게도 나는이 가지고에 무슨 일이 일어나고 있는지보고 설명 사용할 때 :
1 SIMPLE a ALL IDX_PUBLIC,DATE NULL NULL NULL 103 Using where; Using filesort
을
그리고 나는 단지 100 개의 행을 가지고있는 동안이 데이터를 가져 오는 데 0.3 밀리 초가 걸립니다. filesort를 비활성화하는 다른 방법이 있습니까?
내가 색인에 간다면 나는 색인 (PUBLIC, DATE)이 고유하지 않습니다.
테이블 정의 : 당신이 날짜를 기준으로 주문하는 경우
CREATE TABLE IF NOT EXISTS `Cars` (
`ID` int(11) NOT NULL auto_increment,
`DATE` datetime NOT NULL,
`PUBLIC` binary(1) NOT NULL default '0'
PRIMARY KEY (`ID`),
KEY `IDX_PUBLIC` (`PUBLIC`),
KEY `DATE` (`PUBLIC`,`DATE`)
) ENGINE=MyISAM AUTO_INCREMENT=186 ;
테이블의 정의를 게시 하시겠습니까? 'SHOW CREATE TABLE Cars'를 실행하십시오. – Quassnoi
@Quassnoi - Ok. 100 행에 대해 –
300 마이크로 초를 추가 했습니까? 행당 3 마이크로 초? 그 성능은 썩지 않습니다. –