2009-09-09 58 views

回答

2

而不是從文章中獲取數據庫中的所有內容,您可以選擇可以實際顯示的行 - 即。如果每頁有10個項目,請選擇10 - 然後選擇總行數。如果數據庫很大,即使是兩個查詢,這個效率也會更高。

+2

我相信LIMIT是你正在尋找的詞。 – Zoe 2009-09-09 06:30:42

0

我一直在使用Wicked酷PHP這本書中的例子作爲我的出發點。很整齊,很好地解釋了IMO。

0

你想要的東西像

SELECT * FROM your_table WHERE condition = true ORDER BY some_field LIMIT 100, 10 

其中100是記錄數跳過10是要檢索的行數。 如果您希望獲得最高性能,請確保您的索引涵蓋condition和訂單條件字段。

0

這是一個非常好的功能/類作爲標準庫的一部分。我強烈建議你滾你自己沿着這些路線:

  • 查詢摸出總項目(行)。
  • 根據每頁要顯示的項目數計算出較低的上限&的代碼。
  • 相應地限制第二個查詢。

我會發布一些代碼,但會採取的樂趣吧:)

1

像索林Mocanu說,如果你想通過一些標準,也許修改時間或一定的頻率命令的結果,那麼排序將是一個很大的性能損失。即使您只需要10條記錄,仍然需要對所有(可能是數百萬條)記錄進行排序,除非您確定使用了索引並且使用正確。

下面是關於分頁與MySQL的優秀文章: http://www.percona.com/ppc2009/PPC2009_mysql_pagination.pdf

或者從MySQL網站: http://dev.mysql.com/doc/refman/5.5/en/order-by-optimization.html