我有一個數據表可搜索和排序,但可能會產生數百或數千個廣泛搜索結果。假設爲「foo」的用戶搜索和按降序價格秩序的FOOS我想表現出快速跳轉選擇菜單,如下所示:如何在分頁中爲每個頁面拉出和顯示範圍(最小 - 最大)數據?
<option value="1">Page 1 ($25,000,000 - $1,625,000)</option>
<option value="2">Page 2 ($1,600,000 - $1,095,000)</option>
<option value="3">Page 3 ($1,095,000 - $815,000)</option>
<option value="4">Page 4 ($799,900 - $699,000)</option>
...
有直接查詢這些信息的有效途徑數據庫?我一直在抓取所有匹配的記錄,並使用PHP來計算每個頁面的最小值和最大值,這些值似乎效率低下並可能導致縮放問題。
我已經能夠想出的唯一可能的技術是使計算變量可以將每個X記錄(X記錄到頁面)遞增,按此分組,併爲每個頁面選擇MIN/MAX分組......不幸的是,我還沒有能夠想出一種方法來生成該變量。
是的,這基本上是我要來的結論......只是不知道我是否錯過了一些聰明的東西,這會使它很好地工作。 FWIW我在查詢中熟悉LIMIT/OFFSET,它目前沒有被使用的唯一原因是因爲我們不得不查看PHP結果中的每一行來創建每頁的最小/最大值。儘管如此,如果MySQL必須查看第一個X匹配來抵消它們,是不是每次都返回所有內容並逐步遍歷PHP中的集合呢? – 2010-03-15 17:13:57
@Ty:是的。 PHP所做的任何事情,MySQL(C)的速度都提高了10-100倍。 – hobodave 2010-03-15 17:16:36
@Ty:分頁優化資源:http://www.percona.com/ppc2009/PPC2009_mysql_pagination.pdf – hobodave 2010-03-15 17:17:22