데이터베이스에 관해서는 완전히 쓸모가 없지만 현재는 그 작업을해야합니다.두 항목 사이의 동일한 필드의 MySQL 비교 - 쿼리는 영원히 걸립니다
내 테이블의 다른 항목 사이의 날짜 값을 비교하는 쿼리를 만들어야합니다. 다음과 같은 쿼리가 있습니다.
SELECT t1.serial_number, t1.fault_type, t2.fault_type
FROM shipped_products t1
JOIN shipped_products t2 ON t1.serial_number=t2.serial_number
WHERE ABS(DATEDIFF(t2.date_rcv,t1.date_rcv))<90;
하지만 실행하는 데 오래 걸립니다. 정말로, 나는 18 시간 동안 달리기를 그만 두었고 결코 멈추지 않았다. 이 쿼리가 정확합니까? 이 일을하는 더 나은, 영리한 방법이 있습니까?
대단히 감사합니다.
BTW : 모든 프로세스를 파이썬 스크립트로 자동화 할 것이므로, 파이썬 내부에서 모든 로직을 쿼리 내부에 넣지 않고이 작업을 수행하는 더 좋은 방법을 알고 있다면 도움이 될 것입니다.
편집 : 내 질문이 분명하지 않아서 내가해야 할 일을 더 잘 설명하겠습니다. 제품 수리 센터로 이동하여 "결함 없음"으로 고객에게 반송되는 경우가 있습니다. 그 후 클라이언트는 수리 센터에 수리를 의뢰하고 동일한 문제를 제시합니다. 따라서 90 일 간격으로 두 번 센터를 수리 한 제품의 수를 계산하는 쿼리가 필요합니다. 각각의 단일 제품에 대한 유니크 ID는 일련 번호이며, 그 때문에 나는 비현실적인 번호 중복을 찾고 있습니다.
테이블에 몇 개의 레코드가 있습니까? 당신의'where'는 파생/계산 된 값에 의존하기 때문에, 속도를 높이기 위해 인덱스를 사용할 수 없습니다. –
쿼리에서 수행 할 작업을 설명 할 수 있습니까? 샘플 데이터와 원하는 결과는 큰 도움이됩니다. –
좋은 SQL로 처리 할 수있는 부분은 거기에서 처리해야합니다. 파이썬 로직에서 처리 할 초과 행을 전달하는 것은 훨씬 효율적이지 않습니다. – msw