mysql在百萬資料量下查詢慢的問題

2021-07-07 10:43:41 字數 929 閱讀 9898

這兩天,越來越覺得自己做的玩家歷史表,查詢速度很慢,開始還以為是網路的問題,然後持續了一兩天很快pass了這個想法。很可能是自己的查詢速度慢,於是進入資料庫看了一下,發現歷史記錄已經達到了600多萬條了。隨著dau的上公升,玩家越來越多,乃至於歷史記錄也成倍的增長,雖然自己做了定時刪除七天以前的記錄,但還是承受不住巨量的人數增長帶來的歷史資料劇增。

因此,本人運算元據庫直接測試了一下查詢歷史記錄的sql語句,語句如下:

select * from `history` where `playerid`='1001' and `timestamp`>'2015-11-23 09:42' order by `id` desc

結果用時達到了:3.47s,不相信這個時間,然後再次測試了幾次,4.07s,3.55s,3.72s等等

同樣的操作對玩家表進行了查詢結果發現才0.04s,玩家表也有差不多百萬條資料。但查詢用時為何如此短呢?

於是自己從sql語句優化入手:

1.將上面的語句縮減到了:select * from `history` where `playerid`='1001' and `timestamp`>'2015-11-23 09:42'

去掉了排序,結果任然是3s多,

2.再次精簡:select * from `history` where `playerid`='1001'

此時用時雖然降低了點,只用了2.7s左右,但是任然不如人意

3.最後突然想到了一點,自己之前是在玩家表做了索引的,而歷史因為做了刪除7天前的資料,並沒有做索引。於是把playerid新增上索引再次用上面那句sql,結果果然如此,用時:0.004s

總結一下,這次的確是有點疏忽大意了。乃至於出現如此慢的查詢速度,同時也對於索引帶來的效率感到欣慰,雖然索引在查詢速度上有很大的提公升,但是索引也不能隨便用,因為每加乙個索引,整個表的容量也會隨之增加,因此合理利用以及因地制宜的利用索引才是王道。

mysql查詢百萬資料量時速度慢怎麼解決?

這兩天,越來越覺得自己做的玩家歷史表,查詢速度很慢,開始還以為是網路的問題,然後持續了一兩天很快pass了這個想法。很可能是自己的查詢速度慢,於是進入資料庫看了一下,發現歷史記錄已經達到了600多萬條了。隨著dau的上公升,玩家越來越多,乃至於歷史記錄也成倍的增長,雖然自己做了定時刪除七天以前的記錄...

mysql百萬級資料量根據索引優化查詢速度

一 索引的作用 提公升查詢速度的方向一是提公升硬體 記憶體 cpu 硬碟 二是在軟體上優化 加索引 優化sql 優化sql不在本文闡述範圍之內 能在軟體上解決的,就不在硬體上解決,畢竟硬體提公升 昂貴,價效比太低。代價小且行之有效的解決方法就是合理的加索引。索引使用得當,能使查詢速度提公升上萬倍,效...

MYSQL查詢表資料量

1.最常用的 select count from 表名 查的準確,但是資料量大的話 超過100萬 比較慢。2.網上找了一種,據說比count 快,自測沒驗證。select sql calc found rows 1 from 表名 limit 1 select found rows as rowco...