Abfrage verursacht enorme CPU-Auslastung und hohe Latenz
P粉182218860
P粉182218860 2024-01-10 17:21:24
0
1
400

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粉182218860
P粉182218860

Antworte allen(1)
P粉610028841

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

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

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

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

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

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage