日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Mysql数据库分页查询及优化

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

????????最近遇到個數據庫分頁查詢問題,mysql數據庫分頁查詢默認是升序查詢,就是第一頁查詢的是最先插入的數據,最后一頁才是最新插入的數據,弄了個小的數據庫表單,記錄下我的操作過程,還有優化查詢速度的方法。

???????假設我的數據庫里的表名為WHITELISTDATA,數據一共有13條,每頁要求顯示10條數據?

1、一般分頁查詢方法:

第一頁:

select * from WHITELISTDATA order by id limit 0,10備注:假如前端傳入page=1,size=10,表示后端需要返回第一頁數據,該頁最大顯示10條 上面的命令的最后兩個數字0和10是傳入的參數 0 =(page-1)*size 10 = size

備注:limit后面的0是頁數減1然后乘以每頁顯示數量10,limit的詳細的分頁知識可以自行再另外查詢資料

查詢第二頁:

select * from WHITELISTDATA order by id limit 10,10

2、優化查詢方法(利用子查詢進行優化查詢)

查詢第一頁方法:

select * from WHITELISTDATA where id >= (select id from WHITELISTDATA order by id limit 0,1) limit 10;

查詢第二頁方法:

select * from WHITELISTDATA where id >= (select id from WHITELISTDATA order by id limit 10,1) limit 10;

備注:

優化的數據庫查詢當數據在上萬情況下第二種方法比第一種方法快好幾倍的查詢速度

在此我大概解釋下優化提速的原因:普通方法查詢的時候會遍歷數據庫的每行和每列數據,全部都要讀一遍,所以數據上萬條了,鍵值又多的話會慢的不行。

優化用的子查詢方法就要稍微好點,他首先是通過這條語句《select id from WHITELISTDATA order by id limit 0,1》查詢到分頁查詢的那個ID值,不是遍歷每行每列數據,耗時少,然后再根據這條語句《select * from WHITELISTDATA where id >= 》查詢ID值大于上面查詢出來的那個ID值得數據即可,所以遍歷的數據就只有10條數據,所以當數據量很大的時候查詢速度會快很多。

3、降序查詢

上面的查詢方式都是通過ID的升序查詢,所以在分頁查詢的時間,新添加的數據會被放到最后一頁,有些需求是最新添加的數據需要放在最前面,保證用戶方便查看,所以此時需要降序查詢,數據庫查詢默認情況下是升序查詢,降序查詢需要修改一些參數,本質就是加一個desc參數。

普通方法的降序查詢

降序查詢第一頁數據方法

select * from WHITELISTDATA order by id desc limit 0,10

降序查詢第二頁數據方法

select * from WHITELISTDATA order by id desc limit 10,10;

優化降序查詢方法:

優化降序查詢第一頁數據方法

select * from WHITELISTDATA where id <= (select id from WHITELISTDATA order by id desc limit 0,1) order by id desc limit 10;

優化降序查詢第二頁數據方法

select * from WHITELISTDATA where id <= (select id from WHITELISTDATA order by id desc limit 10,1) order by id desc limit 10;

總結

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

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