MySQL分頁查詢

2021-09-02 05:38:47 字數 1973 閱讀 3576

基本語法格式:

select 查詢字段

from 表名

where 條件

limit

offset(開始記錄索引,是從0開始的),size(要取出的條數);

分頁查詢的特點:

1)limit 語句 order by 語句的後面,其次sql執行過程中, limit 也是最後去執行的語句.

2)通用的分頁查詢寫法(pageno:頁數,pagesize:每頁顯示的記錄條數)

select 查詢列表

from 表名

where 條件

order by asc|desc

limit (pageno-1)*pagesize,pagesize ;

一般情況下,客戶端通過傳遞 pageno(頁碼)、pagesize(每頁條數)兩個引數去分頁查詢資料庫中的資料,在資料量較小(元組百/千級)時使用 mysql自帶的limit來解決這個問題:

limit 語句的偏移量就會越大,速度也會明顯變慢

收到客戶端 

select * from table limit (pageno-1)*pagesize, pagesize;

收到客戶端

select * from table limit (pageno-1)*pagesize,pagesize;

在資料量較小的時候簡單的使用limit進行資料分頁在效能上面不會有明顯的緩慢,但是資料量達到了萬級到百萬級sql語句的效能將會影響資料的返回。這時需要利用主鍵或者唯一索引進行資料分頁;

假設主鍵或者唯一索引為 good_id 

收到客戶端

select * from table

where

good_id > (pageno-1)*pagesize

limit pagesize;

#返回good_id為40到50之間的資料

當需要返回的資訊為順序或者倒序時,對上面的語句基於資料再排序。order by asc/desc 順序或倒序 預設為順序

select * from table 

where

good_id > (pageno-1)*pagesize

order by good_id

limit pagesize;

#返回good_id為40到50之間的資料,資料依據good_id順序排列

mysql的聯合查詢命令 union 和 union all ,作用是用於合併兩個或多個 select 語句的結果集。

聯合查詢使用場景:常用於資料類似的兩張或多張表查詢,如不同的資料分類表,或者是資料歷史表等.

聯合查詢的特點:

1)聯合查詢的兩個子查詢的查詢字段個數要一致,查詢列表順序及內容上保持一致

2)使用 union 缺省會自動去重,union all 不消除重複行

3)列的型別可以不一樣,但推薦查詢的每一列,想對應的型別以一樣

4)多次sql語句取出的列名可以不一致,此時以第乙個sql語句的列名為準

5)如果子句中有order by,limit,需用括號()包起來。推薦放到所有子句之後,即對最終合併的結果來排序或篩選

select tno 編號,tname,t***,tbirthday

from teachers

where t***='男'

union

select sno,sname,s***,sbirthday

from students

where s***='男';

知識點的整理

Mysql 分頁查詢 快照 Mysql分頁查詢優化

select from orders history where type 8 limit 1000,10 該條語句將會從表 orders history 中查詢offset 1000開始之後的10條資料,也就是第1001條到第1010條資料 1001 id 1010 資料表中的記錄預設使用主鍵 一...

mysql 分頁查詢 失效 mysql分頁查詢

比如每頁10條,分頁查詢 語法 select from table limit offset,rows offset指定要返回的第一行的偏移量,rows第二個指定返回行的最大數目。初始行的偏移量是0 不是1 select from table limit 0,10 第一頁 select from t...

MySQL分頁查詢

今天研究了一下mysql的分頁查詢,記錄並分享如下 方式1 select from table order by id limit m,n 該語句的意思為,查詢m n條記錄,去掉前m條,返回後n條記錄。無疑該查詢能夠實現分頁功能,但是如果m的值越大,查詢的效能會越低 越後面的頁數,查詢效能越低 因為...