看板 PHP 關於我們 聯絡資訊
這是現在我的分頁 Code $pageN1 = 10; $result = mysql_query('SELECT `a`, `id` FROM `a2` ORDER BY `id`'); $Rmount=@mysql_num_rows($result); $Rseek = ($page1-1)*$pageN1; if($Rmount>$Rseek) { @mysql_data_seek($result,$Rseek); } if($Rmount != 0) { $start = 1; $end = ceil($Rmount/$pageN1); if($end > 10 and $page1 > 5) { $start = $page1 - 4; } if($end + 5 < $end) { $end = $end + 5; } echo '第 '; for($i=$start;$i<=$end;$i++) { $page1 = $i; echo ' <a href="a.php?page0='.$page0.'&page1='.$page1.''.$mbURL.'">'.$i.'</a> '; } echo '頁'; $page1 = ($_GET['page1']*1>0)?$_GET['page1']:1; } 我是先把要的資料抓出來,利用 Count 去計算筆數, 不過我現在有個小問題,這樣做會不會太吃資源呢? 當我的資料量是 10 萬筆以上,這樣做分頁明顯不好, 我現在想到的是,將筆數另外記錄在一個資料表中, 不過似乎有點小麻煩 囧mmmmmmmmm 不知道有沒有人知道更好的做法呢? 萬分感激! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.168.222
PretenderY:可以用 Mysql 的 Limit 試看看~ 05/19 20:51
arrack:推limit 05/19 21:10
shadowjohn:3328篇 05/19 21:33
cleanwind:3328我看過了 ... 但是這樣等於要對 sql 下兩次指令, 05/19 22:18
cleanwind:這樣真的會比較快?而且 * 取出的東西更多,不是嗎? 05/19 22:19
cleanwind:我不用撈出資料庫全部的資料,查詢也只下一次而已 ... 05/19 22:20
MrMarcus:select count(*)並不是撈出所有資料.當資料量多的時候, 05/19 23:36
MrMarcus:先使用select count(*)得到筆數是會比你使用的方式的. 05/19 23:38
MrMarcus:雖然多一次查詢,但是兩者回傳的資料量相差非常多. 05/19 23:39
MrMarcus:不過要注意一下你使用的mysql資料表類型.innodb的話,單純 05/19 23:39
MrMarcus:select count(*)而沒有where條件,速度很慢.如果是myisam 05/19 23:40
MrMarcus:資料表就沒差了,很快.但是通常這種狀況都會搭配where條件 05/19 23:40
MrMarcus:在這個狀況下innodb就不會那麼慢了(要看狀況). 05/19 23:41
JoeHorn:丟進 session,多開個欄位紀錄 SQL statement 是否相同, 05/19 23:57
JoeHorn:相同的話就直接從 session 撈,不同再去 DB 撈資料 05/19 23:58
cleanwind:原來我一直誤解了,謝謝各位 ^^ 05/20 01:54