표에는 온도, 위치 및 날짜 및 기타 현재 사용되지 않는 데이터가 있습니다. 메시지는 온도 센서 밖에, 주방, 거실 예이다 locationmap 곳이다)위치별로 최신 온도 표시
쿼리! 현재 온도를 표시하도록 PHP 코드를 생성
SELECT
t1.*
FROM
temperatures t1
JOIN (
SELECT
locationmap
, MAX(timeof) AS timeof
FROM
temperatures
GROUP BY
locationmap
) AS t2
ON t1.locationmap = t2.locationmap AND t1.timeof = t2.timeof
WHERE
DATE(t1.timeof) BETWEEN DATE_SUB(CURDATE(), INTERVAL 5 MINUTE) AND CURDATE()";
;
// Print out result
while($row = mysql_fetch_array($result)){
echo $row['locationmap']. " - ". $row['message']. " @". $row['timeof'];
echo "<br />";
}
그냥 그것이 현재 않는 각 위치에 대한 최신 온도를 표시 할하지만 결과를 표시 7secs 걸리는 순간으로 나는, 속도를 위해이 경우 가장 최적화 된 쿼리를 궁금 해서요!? M : 느린 서버가 있지만 유일한 사용자입니다.
Thx.
참고하시기 바랍니다. 테이블, 인덱스 및 스토리지 엔진
에 대한 자세한 정보를 문을 작성하고 PHP 코드에서 SQL 코드를 읽기 바랍니다없이
제안 사항에 대해 Thx가 질문을 쉽게 읽을 수 있도록 제 질문을 수정했습니다. 새 쿼리가 이전 쿼리보다 느린 것으로 나타났습니다. 내 것은 7 초 였지만 네가 14 초에 달렸다. 테이블은 Innodb로 설정됩니다. 인덱스는 mysql에 대한 ID, 미안 초보자 용으로 만 설정되며 locationmap, timeof 및 message에 대한 다른 인덱스를 추가합니까? 나는 그동안 약간의 연구를 할 것입니다. (일부 스크린 샷을 테이블 및 인덱스 내 질문에 추가했습니다) –
locationmap, timeof, 인덱스에 대한 인덱스 도움이 될 것이라고 생각하지만 또한 테이블 구조를 변경해야합니다. 데이터 요구 사항에 대해 열 유형이 최적이 아닙니다. –