보고를 위해 함께 통합해야하는 여러 테이블에서 데이터를 가져 오려고합니다. 특정 날짜 이후에 완료된 모든 헤더의 모든 세부 정보를 얻으 려하고 잘못된 데이터로 인해 0 날짜를 확인해야합니다.시간 초과되는 MySQL 쿼리 속도 향상
나는 슬프게도, 만들지 않았고 변경할 수없는 레거시 테이블을 사용하고 있습니다. 이 문은 내 응용 프로그램에서 시간 초과되며 로컬 가상 컴퓨터의 데이터베이스에 대해 실행하는 데 약 40 초가 걸립니다. 더 나은 성능을 위해 쿼리를 리팩토링 할 수 있습니까? 어떤 도움을 주셔서 감사합니다! header
를 들어
SELECT detail.*
FROM detail
JOIN header
ON detail.invoice = header.invoice
WHERE detail.dateapply != '0000-00-00'
AND header.dateapply >= '2017-09-17'
AND header.orderstatus IN ('complete', 'backorder')
ORDER BY detail.DateApply;`
어떤 필드 유형이'dateapply'입니까? – JNevill
dateapply 및 orderstatus에 대한 색인이 있습니까? – sskoko
정상적인 것은 조인되고 필터링되는 테이블에 적절한 인덱스를 추가하는 것입니다. 하지만 네가 테이블을 바꿀 수 없기 때문에 네가 운이 없다고 생각해? 추가 인덱스가 " – knittl