통계를 컴파일하기 위해 매일 쿼리를 실행하고 있지만 실제로 비효율적 인 것처럼 보입니다. 쿼리입니다 :Mysql Sub Select Query Optimization
SELECT a.id, tstamp, label_id, (SELECT author_id FROM b WHERE b.tid = a.id ORDER BY b.tstamp DESC LIMIT 1) AS author_id
FROM a, b
WHERE (status = '2' OR status = '3')
AND category != 6
AND a.id = b.tid
AND (b.type = 'C' OR b.type = 'R')
AND a.tstamp1 BETWEEN {$timestamp_start} AND {$timestamp_end}
ORDER BY b.tstamp DESC
LIMIT 500
이 쿼리는 정말 느리게 실행되는 것 같습니다. 쓰레기 명명에 대한 사과 - 나는 실제 테이블 이름을 공개하지 말 것을 요청 받았다.
하위 선택이있는 이유는 외부 선택이 표 a에서 한 행을 가져와 표 b에서 한 행을 가져 오기 때문입니다. 그러나 또한 테이블 b에서 최신 author_id를 알아야하기 때문에 subselect를 실행하여 리턴하십시오. PHP 루프 내부에서 다른 select를 실행하고 싶지 않습니다. 비효율적이기도합니다.
올바르게 작동합니다.이 데이터 세트를 얻는 훨씬 더 빠른 방법을 찾아야합니다.
@Matt : 제공된 답변을 시도해보고 도움을 받아야하며 문제를 해결 한 대답을 받아 들여야합니다. 아무도하지 않았다면 질문을 편집하여 더 많은 정보를 제공하십시오. –