程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 8種MySQL分頁辦法總結

8種MySQL分頁辦法總結

編輯:MySQL綜合教程

8種MySQL分頁辦法總結。本站提示廣大學習愛好者:(8種MySQL分頁辦法總結)文章只能為提供參考,不一定能成為您想要的結果。以下是8種MySQL分頁辦法總結正文


MySQL的分頁仿佛一向是個成績,有甚麼優化辦法嗎?網上看到網上推舉了一些分頁辦法,但仿佛不太可行,你能點評一下嗎?

辦法1: 直接應用數據庫供給的SQL語句

---語句款式: MySQL中,可用以下辦法: SELECT * FROM 表稱號 LIMIT M,N。

---順應場景: 實用於數據量較少的情形(元組百/千級)。

---緣由/缺陷: 全表掃描,速度會很慢 且 有的數據庫成果集前往不穩固(如某次前往1,2,3,別的的一次前往2,1,3)。Limit限制的是從成果集的M地位處掏出N條輸入,其他擯棄。

辦法2: 樹立主鍵或獨一索引, 應用索引(假定每頁10條)

---語句款式: MySQL中,可用以下辦法:

SELECT * FROM 表稱號 WHERE id_pk > (pageNum*10) LIMIT M。

---順應場景: 實用於數據量多的情形(元組數上萬)。

---緣由: 索引掃描,速度會很快。有同伙提出由於數據查詢出來其實不是依照pk_id排序的,所以會有漏失落數據的情形,只能辦法3。

辦法3: 基於索引再排序

---語句款式: MySQL中,可用以下辦法: SELECT * FROM 表稱號 WHERE id_pk > (pageNum*10) ORDER BY id_pk ASC LIMIT M。

---順應場景: 實用於數據量多的情形(元組數上萬). 最好ORDER  BY後的列對象是主鍵或獨一所以,使得ORDERBY操作能應用索引被清除但成果集是穩固的(穩固的寄義,拜見辦法1)。

---緣由: 索引掃描,速度會很快. 但MySQL的排序操作,只要ASC沒有DESC(DESC是假的,將來會做真實的DESC,等待)。

辦法4: 基於索引應用prepare(第一個問號表現pageNum,第二個?表現每頁元組數)

---語句款式: MySQL中,可用以下辦法:

PREPARE stmt_name FROM SELECT * FROM 表稱號 WHERE id_pk > (?* ?) ORDER BY id_pk
ASC LIMIT M。

---順應場景: 年夜數據量。

---緣由: 索引掃描,速度會很快. prepare語句又比普通的查詢語句快一點。

辦法5:應用MySQL支撐ORDER操作可以應用索引疾速定位部門元組,防止全表掃描

---好比: 讀第1000到1019行元組(pk是主鍵/獨一鍵)。

---SELECT * FROM your_table WHERE pk>=1000 ORDER BY pk ASC LIMIT 0,20。

辦法6: 應用"子查詢/銜接+索引"疾速定位元組的地位,然後再讀取元組. 事理同辦法5

---如(id是主鍵/獨一鍵,藍色字體時變量):

應用子查詢示例:

SELECT* FROMyour_table WHEREid <=
(SELECTid FROMyour_table ORDER
BYid descLIMIT ($page-1)*$pagesize ORDERBYid desc
LIMIT $pagesize

應用銜接示例:

SELECT* FROMyour_table ASt1
JOIN(SELECTid FROMyour_table ORDERBY
id descLIMIT ($page-1)*$pagesize ASt2
WHERE
t1.id <= t2.id ORDERBYt1.id descLIMIT $pagesize;

辦法7: 存儲進程類(最好融會上述辦法5/6)

---語句款式: 不再給出

---順應場景: 年夜數據量.  作者推舉的辦法

---緣由: 把操作封裝在辦事器,絕對更快一些。

辦法8: 不和辦法

---網上有人寫應用 SQL_CALC_FOUND_ROWS。 沒有事理,勿模擬 。

根本上,可以推行到一切數據庫,事理是一樣的。但辦法5未必能推行到其他數據庫,推行的條件是,其他數據庫支撐ORDER BY操作可以應用索引直接完成排序。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved