사용자 트랜잭션 목록이 있습니다. 각 사용자는 여러 트랜잭션을가집니다. 다음 코드를 작성하여 사용자의 가장 최근 트랜잭션을 찾은 다음 지난 7 일 이상 거래를하지 않은 사용자를 선택하지만 내 코드의 시간 복잡도가 무엇인지 알지 못합니다. 누군가 내 코드의 시간 복잡성을 어떻게 풀어 낼 수 있는지 설명 할 수 있습니까?다음 SQL 코드의 시간 복잡성을 어떻게 해결할 수 있습니까?
trans_date는 거래 날짜입니다. 여기
select user_id,_date,datediff(curdate(),_date)
from(
select t1.send_id as user_id,from_unixtime(t1.trans_date) as _date
from transactionhistory as t1
where from_unixtime(t1.trans_date) =
(select max(from_unixtime(t2.trans_date))
from transactionhistory as t2
where t2.send_id = t1.send_id)) as tab
where datediff(curdate(),_date) > 7;
는 EXPLAIN 명령
첫 번째 단계는 시스템에 쿼리 실행 계획을 설명하는 것입니다. 어떤 환경에서 뛰고 있습니까? Hadoop 인 경우 EXPLAIN 명령을 사용하고 결과를 질문에 추가하십시오. –
Richard
@ 리차드 내 질문에 EXPLAIN 명령의 출력을 추가했습니다. 그것은 SQL 서버 환경입니다. 지금 시간 복잡성을 운동하는 것을 도와 주실 수 있습니까? –
Behroz