200萬條記錄的在count與limit時速度很慢,求解決方案 -开发者知识库

200萬條記錄的在count與limit時速度很慢,求解決方案 -开发者知识库,第1张

使用數據庫為mysql 5.0
數據表為userinfo
字段較多,但插入測試數據時只用了四個字段
id       varchar2(50) 存放uuid
name     varchar2(50) 
age      int(11)
createdate datetime
其它為NULL
插入記錄數220萬條測試數據
除了ID與和createdate不同之外,其它字段插入時都是一樣的
現象是:
1.在通過主鍵查詢時,數據很快.0.00..秒<應該是通過索引查詢>
2.在select count(*) from userinfo 時,速度極慢(有點受不了),需要30秒,雖然可以緩存,但再插入一條新的記錄后,又重新計算一次,又需要那么久,有點無奈.
3.使用limit進行分頁查詢,select id, name,age from userinfo limit XXX1,10查詢時表現出來不同的速度.如果XXX1數值較小的話,如10000條以下速度較快(0.01秒),如果是10萬左右(10萬-70萬),約為1秒, 如果是100萬以上(100W-200W)的值的話,那就要約5秒,大於200W以上的話,那就要25秒左右.

其它的一些函數值沒有測試過.
也看了一些優化的資料,主要都是一些調整內存方面的.緩存加大了,對計算的性能提高不多.
求優化的解決方案.

順附帶:
表是innoDB類型的,需要事務支持
測試用的是開發機
筆記本CM1.4G 1G內存 硬盤4500prs.

還有一個問題就是上面的count和limit查詢語句使用了很多時間,但很奇怪就是我的cpu占用率總是不會超過15%.莫非哪里有配置不讓mysql占用較高的cpu資源??還是其它的什么問題.

9 个解决方案

#1


limit 那個應該是正常現象。
select count()應該不會出現你所說的情況,建議用explain查一下。

最佳答案:

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复