동일한 데이터베이스에 프로덕션 설정 및 dev가 설정되어 있습니다. prodution에 8 천만 개의 레코드가있는 테이블이 하나 있는데 dev에 행 수가 적습니다. 두 표 모두 동일한 날짜 색인을가집니다. 그러나 프로덕션 테이블에서 EXPLAIN을 사용할 때 쿼리가 인덱스를 사용하지 않고 모든 행을 스캔하고 있음을 알 수 있습니다. 하지만 그것은 dev 테이블, EXPLAIN은 유형이 '범위'이고 키가 '날짜'이므로 날짜 인덱스를 사용하고 있음을 보여줍니다. 왜 이런 일이 일어나는거야?동일한 테이블이 다른 데이터베이스에서 인덱스를 사용하지 않음
SELECT date(date) as date, SUM(amount) AS points FROM my_table
WHERE date BETWEEN '2014-04-17' AND '2014-04-23'
AND status NOT IN (3,4) AND type NOT IN (5)
GROUP BY date(date) ORDER BY date DESC.
내가 '날짜', '유형'과 '상태'와 다른 복합 인덱스가 다음과 같이
내 쿼리입니다. 그러나 그것도 사용하지 않습니다. GROUP BY를 사용하거나 사용하지 않고 시도했습니다. 이 문제 때문에 내 쿼리가 종종 프로덕션에서 시간 초과되었습니다.
주당 합계를 계산하기 위해 주로 6 ~ 7 행만 반환하므로 –
날짜 필드에 날짜 또는 날짜/시간 필드가 있습니까? – Kickstart
예. 그것은 날짜 시간입니다 –