Heim  >  Fragen und Antworten  >  Hauptteil

Abfrage verursacht enorme CPU-Auslastung und hohe Latenz

Die folgende Abfrage verursacht eine enorme CPU-Auslastung und hohe Latenz in meiner Datenbankumgebung. Ich habe versucht, verschiedene Arten von Indizes zu verwenden, um die Abfrageleistung zu verbessern, aber leider hat keiner der Indizes zur Verbesserung der Leistung beigetragen. Gibt es einen Vorschlag, die Abfrage neu zu schreiben, um das gleiche Ergebnis zu erhalten?

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粉182218860283 Tage vor376

Antworte allen(1)Ich werde antworten

  • P粉610028841

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

    此索引对 view_mats 有益:INDEX(mngy, nonUnixjdjf)。也就是说,对于 trip_dstyINDEX(mngy, jdjf)

    并且(可能)删除idx_n1,因为它仅包含该索引的开头。

    (我并不完全精通列存储;上面的建议是针对 InnoDB 索引;它可能适用于此。)

    一般来说,Float 和 Double 上的 (m,n) 是无用的,并且可能导致舍入错误。 double(20,10) 可能应该是普通的 doubleDECIMAL(20,10)

    LIMIT 10000——您真的向客户端交付了那么多行吗?铲掉这么多也是一个性能问题。

    Antwort
    0
  • StornierenAntwort