作者ckmarkhsu (深藍站長)
看板PHP
標題Re: [請益] mysql 上一筆, 下一筆?
時間Wed Jun 14 13:52:33 2006
如果在頁面產生時,直接將上一筆或下一筆的 ID 查詢出來做成連結也可以
但其實要實踐這個功能,未必「每次」讀取頁面都要去查詢
可以做成用到時再去查即可:)
上一篇,可以做成 <a href="showthread.php?t=2345&goto=up">
下一篇,可以做成 <a href="showthread.php?t=2345&goto=down">
意即,goto 編號為 2345 這篇主題的下一篇或上一篇
程式中只要寫個 switch 判斷 goto 變數
再依據之前前輩所言之方法查詢即可
這樣就只有使用到此方式時才會 query
並不會每次執行頁面都去 query 出上一筆與下一筆,可大幅減少運算
vBulletin 就適用此方式:)
※ 引述《postmaster (post master)》之銘言:
: 假設是 view.php?id=$id ,通常就是如下:
: 文章內容
: 上一筆 | 下一筆
: 這樣至少要執行3次SQL查詢。
: 當1萬人次時,那就要3萬次SQL查詢,只為了製造出上一筆、下一筆的連結
: 當10萬人次時,也就是30萬次SQL查詢了。
: 重點在於
: 辛苦製造出上一筆、下一筆的連結,使用者也不一定會去點它。
: 不管使用者會不會點選它,就已經事先「付出」了一定量的系統資源。
: 可以參考一下phpbb對於這種情形的處理。
: 雖然phpbb將原來需要3萬次SQL查詢、減為2萬次、甚至1萬次。
: 但呈現上還是有稍許bug
: 至於資料庫取出幾筆的部分。
: 可以採class套件的方式來實作。
: 不論是MySQL、MSSQL、Oracle ... 這些都是可以處理的。
--
台灣深藍vBulletin技術論壇
http://www.twvbb.com
vBulletin 論壇系統,內建 「0 修改新增插件」「完整附件功能」
「無限深度子論壇」「進階權限管理」「前台 AJAX 即時管理」 歡迎研究:)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.249.201
推 andreli:這樣點了上一篇或下一篇不是還會再query嗎? 06/14 17:08
推 postmaster:點了才會query、而非「未點前就必須query」 06/14 17:19
推 andreli:所以我有點疑惑,這篇的作法在資源上會減少嗎?謝謝指教 06/14 20:03
推 ckmarkhsu:會,因為不是每次都查詢,只有需要時才查詢 06/14 23:48
推 andreli:想請教goto=up那邊怎麼判斷? 06/15 08:21
→ andreli:因為我想不出來有goto那參數,跟沒有那參數有啥分別? 06/15 08:24
→ andreli:因為我覺得按下那個連結都還是要query的,是嗎? 06/15 08:25
推 appleboy46:就是因為你按下那個連結才需要阿 你不按的話 還需要嗎 06/15 21:37
推 andreli:那這樣的作法跟沒有加goto的作法差在哪裡? 06/15 23:17
→ andreli:我感覺加了goto反而還比較浪費資源。請指教,因為不是很懂 06/15 23:18
→ ckmarkhsu:如果不加 goto 就是要加上 &nid=xxx 意即下一篇文章的id 06/16 20:39
→ ckmarkhsu:所以無論你是否需要用到此功能,都要放類 2 個 query 06/16 20:39
→ ckmarkhsu:來查詢上一篇與下一篇的 ID,但如果你用此方式 06/16 20:40
→ ckmarkhsu:就只有要查詢時才會用到,可大幅減少查詢次數 06/16 20:40
推 ckmarkhsu:小聲說..在PHP版被m了五篇..結果一篇優文都沒有T T XD 06/16 20:46
推 sedc:我也是用ck大的方法,因為它不是在產生連結時就做查詢,而是 08/07 00:34
→ sedc:在按下時才查詢,所以如果看了一萬筆,就只會有一萬次查詢 08/07 00:35