作者justinC (無)
看板PHP
標題[請益] 取得搜尋列數問題
時間Fri Nov 9 01:29:49 2007
我的SQL搜尋語法是
select ... from ...where ....limit a,b
由於資料很多,又需要分頁
所以必須用limit依照頁面數從第幾筆開始顯示
問題a變數必須知道這個SQL再不包含limit情況下都全部列數
才能計算出第幾頁,不然怎麼算出來都只有一頁
雖然可以先不加limit,把搜尋到的資料全搜出來再用seek做分頁功能
但是可能搜出來的筆數好幾萬,這個作法在顯示時有點沒有效率
請問一般的都怎麼設計這類的語法
--------------------------------
因為我的需求必須有全部顯示與搜尋顯示
剛剛想到一個解法
1.全部顯示的列數多用一個select count()語法解決,然後搭配limit
好處不用每次都要搜全部資料
2.搜尋顯示的列數就只好全部搜出來後,做data seek移動,
這樣也不用每次都要重新搜尋
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.131.75.147
※ 編輯: justinC 來自: 220.131.67.151 (11/09 01:37)
1F:推 JoeHorn:第二個作法比較好,而且可以偷偷塞進 session ... :p 11/09 04:22
2F:推 justinC:1,2兩種做法都需要做,因為要這兩項功能阿.. 11/09 12:58
3F:→ justinC:塞入SESSION...好處可以讓它存取速度更快? 11/09 12:58
4F:推 justinC:請問怎麼把結果塞入session,我把result存起來,好像沒有用 11/10 02:26
5F:→ buganini:要先fetch出來 result型態是resource不能塞進session 11/10 05:03
6F:→ buganini:要能serialize才能塞 11/10 05:03
7F:推 buganini:不過我不贊成把東西亂塞session 11/10 05:28
8F:→ buganini:我只要把cookie關掉 然後拼命refresh 11/10 05:28
9F:→ buganini:server那邊的session file就會長很大 11/10 05:29
10F:→ buganini:而且db那邊都會做好cache了吧 11/10 05:30
11F:推 justinC:session的確會有風險,不用limit,用data_seek移動 11/11 00:47
12F:推 justinC:好處是可cache住,這個作法適合搜尋 11/11 00:49