다음 쿼리는 내 데이터베이스 환경에서 엄청난 CPU 사용률과 높은 대기 시간을 유발합니다. 쿼리 성능을 향상시키기 위해 다양한 유형의 인덱스를 사용해 보았지만 불행히도 어떤 인덱스도 성능 향상에 도움이 되지 않았습니다. 동일한 결과를 얻기 위해 쿼리를 다시 작성하라는 제안이 있습니까?
query SELECT kln.qsw, kln.mngy FROM ( SELECT kln2.mngy, MAX(kln2.nonUnixjdjf) dm_hj FROM mfh.view_mats kln2 WHERE kln2.jdjf <= '2022-10-19 10:47:25.000000' GROUP BY kln2.mngy ) pun_ghky JOIN pun_ghky.mngy = kln.mngy);
이 인덱스 쌍은
view_mats
有益:INDEX(mngy, nonUnixjdjf)
。也就是说,对于trip_dsty
:INDEX(mngy, jdjf)
.및 (아마도)
idx_n1
는 해당 인덱스의 시작 부분만 포함하므로 제거합니다.(저는 컬럼 저장소에 대해 완전히 알지 못합니다. 위의 조언은 InnoDB 인덱스에 대한 것이며 여기에 적용될 수 있습니다.)
일반적으로
(m,n)
是无用的,并且可能导致舍入错误。double(20,10)
可能应该是普通的double
或DECIMAL(20,10)
Float 및 Double에서는.LIMIT 10000
- 정말 그렇게 많은 행을 고객에게 전달했나요? 너무 많이 삽질하는 것도 성능 문제입니다.