찾다

 >  Q&A  >  본문

엄청난 CPU 사용률과 높은 대기 시간을 유발하는 쿼리

다음 쿼리는 내 데이터베이스 환경에서 엄청난 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);

P粉182218860P粉182218860350일 전451

모든 응답(1)나는 대답할 것이다

  • P粉610028841

    P粉6100288412024-01-11 14:18:51

    이 인덱스 쌍은 view_mats 有益:INDEX(mngy, nonUnixjdjf)。也就是说,对于 trip_dstyINDEX(mngy, jdjf).

    및 (아마도) idx_n1는 해당 인덱스의 시작 부분만 포함하므로 제거합니다.

    (저는 컬럼 저장소에 대해 완전히 알지 못합니다. 위의 조언은 InnoDB 인덱스에 대한 것이며 여기에 적용될 수 있습니다.)

    일반적으로 (m,n) 是无用的,并且可能导致舍入错误。 double(20,10) 可能应该是普通的 doubleDECIMAL(20,10) Float 및 Double에서는.

    LIMIT 10000 - 정말 그렇게 많은 행을 고객에게 전달했나요? 너무 많이 삽질하는 것도 성능 문제입니다.

    회신하다
    0
  • 취소회신하다