日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

分页查询千万级数据慢

發布時間:2023/12/20 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分页查询千万级数据慢 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

mysql查詢千萬級數據越來越慢優化:

1.分表:(固定某個表存多少數量的數據:例如:一張表存100w的數據量);

2.優化sql和建立適合的索引(復合索引);

3.使用redis緩存。(redis存一份ID.然后mysql存一份ID每次插入刪除的時候同步即可。查詢的時候只需要從redis里面找出適合的10個ID,然后到mysql里面查詢出10條)

記錄即可);

4.總數要單獨處理:涉及到總數操作,專門維護一個總數。(例如:新注冊一個會員,總數值加1,需要總數的時候直接拿這個總數,也可以在這個表上添加了觸發器并創建一個專門用來統計總行數的表

添加更新刪除該表就會觸發,分析條件后直接把統計表的相應字段累加,查詢的時候直接讀取統計表中的相應字段就可以了準確度沒問題,如果有條件查詢分頁,那么分頁表的數據就發揮不了左右)。

5.可通過定時任務去批量查詢總數,例如:開啟10個線程去批量計算總數,然后再各自相加即可,不過這樣會導致內存(CPU)過高,而造成內存溢出。

6.修改原有界面內容,單獨去查詢總數,需要即去查詢。也可以用ID建立一定的區間,比如查詢最新的記錄,每次只是查詢2w條的記錄。

? ? 每次只要查最新的一條記錄,id是自增字段,取當前的這個id值就可以大約知道總條數了(注意:項目里并不會刪除參與記錄),但是這種不適合帶條件的查詢。

另外一種查詢條數:

SELECT?*?FROM?table?WHERE?id?BETWEEN?1000000?AND?1000010;

如果需要查詢?id?不是連續的一段,最佳的方法就是先找出?id?,然后用?in?查詢

SELECT?*?FROM?table?WHERE?id?IN(10000,?100000,?1000000...);

使用IN這種基本就是0s級別的。

優化注意事項:

?

1.多個表關聯的時候建議相關聯的表都建立索引。

?

2.在order?by?和where語句中的建議建立聯合索引來提升查找速度。

?

3.分頁最好別讓別人看到10萬條以后的數據,要不然會很慢!就算用索引。經過這樣的優化,mysql到了百萬級分頁是個極限。

提示:

1、用的myisam還是innodb,myisam的查詢速度明顯比innodb快很多。

2、能不加where條件的盡量不加。

3、索引優化

(可以從業務上進行了優化,規定只查詢指定時間內的數據,或者一定時間內的數據。查詢所有總數數據也可以使用緩存)

?

轉載于:https://www.cnblogs.com/liuying1995/p/6723417.html

總結

以上是生活随笔為你收集整理的分页查询千万级数据慢的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。