mysql에서 쿼리에 문제가 있습니다. 차트 음모를 꾸미고, 나는이 간단한 구조로 'X SECOND'간격으로 임시 테이블을 만드는거야 :mysql에서 천천히 선택
CREATE TEMPORARY TABLE intervals (date DATETIME NOT NULL PRIMARY KEY)
및 쿼리이 SELECT :
SELECT COUNT(dt.Device) AS count, i.date
FROM intervals i LEFT JOIN device_tracker dt ON
i.date <= dt.date AND
i.date + INTERVAL X SECOND >= dt.date
GROUP BY i.date
Device
는 기본 키 및 dt.date입니다 색인입니다.
device_tracker의 20000 개의 행과 30-35 간격의 쿼리에는 약 4-5 초가 걸립니다. 그게 정상인가요? 속도 향상을 위해 뭔가를 할 수 있습니까?
이것은 설명입니다 :
id select_type table type possible_keys key key_len ref rows Extra
-------------------------------------------------------------------------------------------------------------------
1 SIMPLE i index NULL PRIMARY 8 NULL 29 Using index; Using temporary; Using filesort
1 SIMPLE dt ALL date NULL NULL NULL 21594
편집는 : LAST_TIME 내가 대신 날짜를 사용하고, 존재하지 않습니다.
dt.Last_Time에 대한 색인이 있습니까? –
내 잘못 이었어. 전 현장 이름을 바꿨어요. 색인으로 문제가 계속됩니다. –
간격 계산을 ON 조건의 오른쪽으로 이동하면 설명이 변경됩니까? i.date> = dt.date에서 - INTERVAL X SECOND? – Galz