※ 引述《JoeHorn (獅子男)》之銘言:
: ※ 引述《alpe (自由的風)》之銘言:: : id int unsigned auto-increment,
: : 不過有可能會被刪掉. 所以不見的連號,
: : 現在只有傳來一個 id 的情況下,
: : 我該怎麼找出它的 上一筆 /下一筆啊...
: : 不會要我全部抓一遍吧.
: 推 alpe:我用id做編號. 現在抓特定一筆 ID 跟它上下 06/14 12:13
: → alpe:limit 在可能不連號的情況下 XD 不是你想的那樣啊 06/14 12:15
: → alpe:limit "offset",rows 06/14 12:16
: 這跟連不連號沒關係, 用 LIMIT 去取第一個比這個 ID 大的編號不難吧?
: 取上一筆:
: $sql = "SELECT * FROM table WHERE id < $id ORDER BY id DESC LIMIT 1 ;";
: 取下一筆:
: $sql = "SELECT * FROM table WHERE id > $id ORDER BY id ASC LIMIT 1 ;";
: =======
: 題外話:
: 有 LIMIT 給你用, 你就該笑了, SQL server 2000 不吃這種東西... 囧rz
假設是 view.php?id=$id ,通常就是如下:
文章內容
上一筆 | 下一筆
這樣至少要執行3次SQL查詢。
當1萬人次時,那就要3萬次SQL查詢,只為了製造出上一筆、下一筆的連結
當10萬人次時,也就是30萬次SQL查詢了。
重點在於
辛苦製造出上一筆、下一筆的連結,使用者也不一定會去點它。
不管使用者會不會點選它,就已經事先「付出」了一定量的系統資源。
可以參考一下phpbb對於這種情形的處理。
雖然phpbb將原來需要3萬次SQL查詢、減為2萬次、甚至1萬次。
但呈現上還是有稍許bug
至於資料庫取出幾筆的部分。
可以採class套件的方式來實作。
不論是MySQL、MSSQL、Oracle ... 這些都是可以處理的。
--
世上沒有陌生人,只有還沒認識的朋友。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.31.23.130