記一次解決MYSQL占用CPU100%的問題


有張表50W條數據,今天寫了個JOB每隔10秒對其進行分組查詢並獲取每組的第一條數據。

select 
    (
        select KVARH_Total 
        from e_monitorhours 
        where MobusId=a.MobusId
        order by Id DESC
        limit 1
    ) as KVARH_Total
from e_monitorhours as a
where 1=1 and MobusId not in (51,52,53)
group by a.MobusId

數據量小的時候還沒問題,但是當達到幾十萬的時候,CPU100%。當然一開始是不知道的。

后來在網上搜索說執行:

show full processlist

可以看到性能差的SQL語句,然后在info字段里面果斷找到。

因為MobusId沒加索引,只要給其加上索引即可。

 


 

空條件下查詢千萬級數據總數的方法:

select TABLE_ROWS from information_schema.`TABLES` 
WHERE table_schema='數據庫名稱' and TABLE_NAME = '表名';

經過證實,這種方法查出來的結果是不對的。跟實際Count的數量不一致。原因可百度下。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM