亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

MySQL數據-實現分頁的最佳方法?

MySQL數據-實現分頁的最佳方法?

桃花長相依 2019-07-05 12:31:02
MySQL數據-實現分頁的最佳方法?我的iPhone應用程序連接到我的PHPWeb服務,從MySQL數據庫中檢索數據。一個請求可以返回500個結果。實現分頁和一次檢索20個項的最佳方法是什么?假設我從我的數據庫收到了前20個廣告。現在我怎樣才能要求接下來的20個廣告呢?
查看完整描述

3 回答

?
Qyouu

TA貢獻1786條經驗 獲得超11個贊

來自MySQL文檔:

限制子句可用于限制SELECT語句返回的行數。極限使用一個或兩個數值參數,這兩個參數都必須是非負整數常量(除非使用準備好的語句)。

使用兩個參數,第一個參數指定要返回的第一行的偏移量,第二個參數指定要返回的最大行數。第一行的偏移量為0(而不是1):

SELECT * FROM tbl LIMIT 5,10;  # Retrieve rows 6-15

要從某個偏移量中檢索到結果集末尾的所有行,可以為第二個參數使用一些較大的數字。此語句檢索第96行到最后一行的所有行:

SELECT * FROM tbl LIMIT 95,18446744073709551615;

使用一個參數,該值指定從結果集開始返回的行數:

SELECT * FROM tbl LIMIT 5;     # Retrieve first 5 rows

換句話說,限制行_計數等于極限0,行_計數。


查看完整回答
反對 回復 2019-07-05
?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

對于500條記錄,效率可能不是問題,但是如果您有數百萬條記錄,那么使用WHERE子句來選擇下一頁可能是有利的:

SELECT *FROM yourtableWHERE id > 234374ORDER BY id
LIMIT 20

這里的“234374”是您查看的Preous頁面上最后一條記錄的ID。

這將使id上的索引可用于查找第一條記錄。如果你用LIMIT offset, 20你可能會發現,當你在最后一頁的時候,它會變得越來越慢。正如我所說的,如果您只有200條記錄,這可能并不重要,但它可以與更大的結果集有所不同。

這種方法的另一個優點是,如果調用之間的數據發生了變化,則不會丟失記錄或得到重復的記錄。這是因為添加或刪除行意味著所有行的偏移量在更改后都會更改。在你的例子中,這可能并不重要-我想你的廣告庫不會經常變化,而且無論如何也不會-如果它們連續兩次得到相同的廣告,人們會注意到-但是如果你在尋找“最佳方式”,那么在選擇使用哪種方法時,這是另一件需要記住的事情。

如果您確實希望在偏移量中使用限制(如果用戶直接導航到頁10000而不是一個接一個地分頁,這是必要的),那么您可以閱讀本文遲行查找通過較大的偏移量來提高極限的性能。


查看完整回答
反對 回復 2019-07-05
?
慕仙森

TA貢獻1827條經驗 獲得超8個贊

定義偏移量用于查詢。例如

第1頁-(記錄01-10):偏移量=0,極限=10;

第2頁-(記錄11-20)偏移量=10,極限=10;

并使用以下查詢:

SELECT column FROM table LIMIT {someLimit} OFFSET {someOffset};

例如第2頁:

SELECT column FROM tableLIMIT 10 OFFSET 10;


查看完整回答
反對 回復 2019-07-05
  • 3 回答
  • 0 關注
  • 612 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號