代码之家  ›  专栏  ›  技术社区  ›  萝莉w

如何优化mysql查询?

  •  0
  • 萝莉w  · 技术社区  · 6 年前

    以下查询需要16秒才能得到结果。

    SELECT t.descr appSystem, t.writetime dateTime, ROUND(avg(t.cpu_avg_1),2) num FROM(
        select 
        res.res_descr DESCR,
        T9.WRITETIME,  
        ifnull(ROUND((CASE WHEN T9.kpi_no = 100000041 OR T9.kpi_no = 120000093 THEN T9.value END), 2), 0)  cpu_avg_1
        FROM res_object res left join (
        SELECT res.res_id, p.value, p.kpi_no, p.WRITETIME ,p.kbp FROM  res_object res
        LEFT JOIN pm_raw_p_reshost p ON p.kbp = res.res_id AND (p.kpi_no = 100000041 OR p.kpi_no = 120000093)
        AND res.classname='ResHost' ORDER BY p.value DESC) t9 on T9.res_id=res.res_id,
        res_node node,
        res_dim_os OS 
        WHERE node.res_id=res.res_id
        AND os.os_id=node.os_id
        AND (OS.DESCR = 'Linux' OR OS.DESCR = 'Windows')
    ) t WHERE t.writetime / 1000 < UNIX_TIMESTAMP(now()) 
    AND t.writetime/1000 > UNIX_TIMESTAMP(DATE_SUB(now(),INTERVAL 1 day)) 
    GROUP BY t.descr
    ORDER BY avg(t.cpu_avg_1) DESC
    LIMIT 0,15;
    

    t.writetime / 1000 < UNIX_TIMESTAMP(now()) AND t.writetime/1000 > UNIX_TIMESTAMP(DATE_SUB(now(),INTERVAL 1 day)) .

    花16秒是我现在能做的最快的。

    我怎样才能用尽可能少的时间得到我想要的数据?

    任何答复都将不胜感激。

    0 回复  |  直到 6 年前