MySQL數據庫limit分頁,翻頁查詢慢的問題

項目的訂單表數據量已經有1百萬多了,發現越往後翻頁,數據查詢速度也越來越慢了

explain分析了sql語句發現是全表掃描了1百萬行數據

百度了一些資料,覺得用MySQL的覆蓋索引加速分頁查詢是較好的解決方法

利用了索引查詢的語句中如果只包含了那個索引列(覆蓋索引),那麼這種情況會查詢很快。因爲利用索引查找有優化算法,且數據就在查詢索引上面,不用再去找相關的數據地址了,這樣節省了很多時間。另外Mysql中也有相關的索引緩存,在併發高的時候利用緩存就效果更好了。

id字段是主鍵,自然就包含了默認的主鍵索引。現在讓我們看看利用覆蓋索引的查詢效果如何。 這次我們之間查詢最後一頁的數據(利用覆蓋索引,只包含id列),如下: select id from product limit 866613, 20 0.2秒

這樣我先將目標數據的id全部找到,然後根據其他查詢需求再去join其他,避免了一開始就join查詢的全表掃描,提高查詢速度,儘量利用可以用到的條件所有的索引來篩選數據。

也總結出了在數據量大了的情況下儘量一開始就使用join查詢,提醒自己通過覆蓋索引將需要的目標數據找到,然後再去join會很大提高查詢速度,這也是我們平常處理多數生活事情也用到的道理。

以下是對TP5分頁的優化

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章