首页  >  问答  >  正文

查询导致巨大的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粉182218860283 天前375

全部回复(1)我来回复

  • 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——您真的向客户端交付了那么多行吗?铲掉这么多也是一个性能问题。

    回复
    0
  • 取消回复