에서 쿼리와 테이블을 최적화 나는이 가끔 이상 30 초 걸릴 수 1100 만 개 레코드가있는 테이블의 경우 다음 쿼리/테이블는 MySQL의 5.1
SELECT playitemid,MAX(playdatetime)
FROM buma
WHERE licenseid = 1 AND playdatetime > Date_sub(Curdate(), INTERVAL 1 month)
GROUP BY playitemid
을 최적화에 관한 질문이 있습니다.
다음은 테이블에 대한 create 문입니다.
CREATE TABLE `buma` (
`bumaid` int(11) NOT NULL AUTO_INCREMENT,
`playitemid` int(11) NOT NULL,
`playdatetime` datetime DEFAULT NULL,
`stopdatetime` datetime DEFAULT NULL, `licenseid` int(11) NOT NULL, editionid` int(11) DEFAULT NULL,
PRIMARY KEY (`bumaid`),
KEY `ind_buma`(`playdatetime`,`licenseid`,`playitemid`) USING BTREE) ENGINE=InnoDB AUTO_INCREMENT=68644363 DEFAULT CHARSET=latin1;
쿼리를
종류 안부 속도를 더 키 또는 인덱스를 정의 할 수있는 방법이 있나요,
비요른
당신이'EXPLAIN' 쿼리를 시도한 곳 (이 경우 KEY를 사용해야하는 것처럼 보였지만 확실하지는 않지만) –
나는 (당신이 제공 한 것을 기준으로 생각하면) 인덱스 만 '(playdatetime, licenseid)'가 더 잘 수행됩니다. –
@AlonEitan이 SIMPLE \t buma \t 범위 \t ind_buma \t ind_buma \t 5,564,864 \t 어디에 사용 전에 내가 설명하는 주석을 실행하면, 색인 사용; 임시 사용; Using filesort – Subblaze91