나는 SELECT
성명을 가지고 있는데 그것을 최적화하고 싶습니다. mysql - order by optimization은 경우에 따라 ORDER BY
을 최적화하기 위해 색인을 사용할 수 없다고 말합니다. 특히 점 : 당신은 key_part2에 의해 T1 키 2 = 일정 ORDER에서 키
SELECT *의 비 연속적인 부분에 ORDER BY를 사용ORDER BY 최적화가 다음 SELECT 문에서 적용됩니까?
;
이 경우가 될 수 있습니다. 다음 SQL 문으로
UNIQUE KEY `met_value_index1` (`RTU_NB`,`DATETIME`,`MP_NB`),
KEY `met_value_index` (`DATETIME`,`RTU_NB`)
: 나는 다음과 같은 인덱스를 사용하고
SELECT * FROM met_value
WHERE rtu_nb=constant
AND mp_nb=constant
AND datetime BETWEEN constant AND constant
ORDER BY mp_nb, datetime
- 이 충분히 인덱스
met_value_index1
을 삭제하고 새가RTU_NB
,MP_NB
,DATETIME
주문 그것을 만들 것입니까? ORDER BY
절에 RTU_NB를 포함해야합니까?
결과 : 나는 시도 무엇 @meriton 제안 및 인덱스
met_value_index2
을 추가했습니다.
SELECT
은 1.2 초 후에 완료되었지만 이전에는 5.06 초 후에 완료되었습니다. 다음은 질문에 속하지 않지만 부수적 인 참고 사항입니다. 다른 시도를 한 후에 엔진을 MyISAM에서 InnoDB로 전환했습니다 -
rtu_nb, mp_nb, datetime
을 기본 키로 사용하여 - 진술은 0.13 초 후에 완료되었습니다!
설명과 제안에 감사드립니다. 나는 그것을 시도하고 가능한 한 빨리 결과를보고 할 것이다 - 현재 원격 기계의 전원이 꺼져있다. 그리고 나는 무엇이 바뀔지 궁금하다. –