2010年1月4日

如何有效率地分頁? by ihower

Efficient Pagination Using MySQL 是一份針對分頁這件事情如何更快的 PDF。
傳統的分頁方式,正如 will_paginate plugin 所做的:顯示所有頁數跟連結。有個不 scale 的問題是,它用了 OFFSET 跟 COUNT,當資料量越來越多,分頁的速度就會越來越慢 :(

   1: SELECT count(*) FROM messages



   2: SELECT * FROM messages ORDER BY id DESC LIMIT 0, 20


這裡提出的解決方案如同 Twitter 所採用的,只讓使用者點下一頁:

不要顯示頁數、不要顯示總數量,可以搭配使用 Ajax 換下一頁。如此就可避免使用到 OFFSET 只用 LIMIT,也減少了一次 COUNT query。


   1: page1 = SELECT * FROM messages LIMIT 10 WHERE id > 0 ASC id



   2: page2_min_id = page1.last.id



   3: page2 = SELECT * FROM messages LIMIT 10 WHERE id > page2_min_id ASC id


當然,有個缺點就是使用者沒辦法知道總共有多少資料了。

原文出處:http://ihower.tw/blog/archives/3457

沒有留言:

聖誕跑趴歡樂降★韓版假兩件針織連衣裙$890,新款顯瘦棒球服連帽風衣外套下殺$510,冬新款歐美棉襖棉服連帽短款外套限量↘$530,秋冬新款韓版大碼毛領氣質毛料外套↘$680,快上左耳貓網路購物

您好!如圖太小看不清楚,請 點選此處 看詳細內容 左耳貓蝦皮賣場 https://shopee.tw/hrf5168 左耳貓 露天賣場 http://class.ruten.com.tw/user/index00.php?s=starbox 左耳貓粉...